![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
не понимаю как...
вот ревально работающая програмаа Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, Grids ;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
BitBtn1: TBitBtn;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
n,k,i:Integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
n:=3;
Edit1.Text:=IntToStr(n);
StringGrid1.ColCount:=n;
StringGrid2.ColCount:=n;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
n:=StrToInt(Edit1.Text);
StringGrid1.ColCount:=n;
StringGrid2.ColCount:=n;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i,j:integer;
s:string; //преобразование массива
begin
with StringGrid1 do begin
for i:=0 to RowCount-1 do begin
for j:=0 to Rows[i].Count-1 do begin
tag:=StrToIntDef(rows[i][j],0);
if (tag mod 2) =0 then begin
StringGrid2.Rows[i].Add(rows[i][j]);
rows[i][j]:='';
end else
s:=s+rows[i][j]+#13#10;
end;
Rows[i].Text:=s;
s:='';
end;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var i:integer;
begin
if StringGrid1.Cells[0,0]='' then
for i:=0 to n do
StringGrid1.Cells[i,0]:=inttostr(random(100))
end;
end. |
|
#2
|
|||
|
|||
|
Ячейку удалить нельзя (можно очистить).
Удалить можно или строку или колонку. Примерно так : Код:
//Удалить строку ARow
function StringGrid_DeleteRow(SG : TStringGrid; ARow : integer) : boolean;
Var
N1,N2,i : integer;
begin
Result:=FALSE;
if SG<>NIL then begin
N1:=ARow;
N2:=(SG.RowCount-2);
if (SG.RowCount-1)>SG.FixedRows then begin
for i:=N1 to N2 do
begin
SG.Rows[i].Assign(SG.Rows[i+1]);
end;
SG.Rows[SG.RowCount-1].Clear;
SG.RowCount:=SG.RowCount-1;
Result:=TRUE;
end
else begin
SG.Rows[SG.FixedRows].Clear;
Result:=TRUE;
end;
end;
end;
//Удалить колонку ACol
function StringGrid_DeleteCol(SG : TStringGrid; ACol : integer) : boolean;
Var
N1,N2,i : integer;
begin
Result:=FALSE;
if SG<>NIL then begin
N1:=ACol;
N2:=(SG.ColCount-2);
if (SG.ColCount-1)>SG.FixedCols then begin
for i:=N1 to N2 do
begin
SG.Cols[i].Assign(SG.Cols[i+1]);
end;
SG.Cols[SG.ColCount-1].Clear;
SG.ColCount:=SG.ColCount-1;
Result:=TRUE;
end
else begin
SG.Cols[SG.FixedCols].Clear;
Result:=TRUE;
end;
end;
end; |
|
#3
|
|||
|
|||
|
Посмотрите мою программу. я забиваю количество клонок(строка у меня только одна).
Далее0из первой строки мне выводятся элементы во вторую но поскольку их количество совпадает с начальным-а их должно быть в два раза меньше-мне надо убрать половину..... посммотрите картинку-сейчас выложу |