| Цитата(ylana @ 8.5.2005, 11:12) | | нужно создать столько CheckBox, сколько строк таблицы |
Зависит от того, какую таблицу ты собираешься юзать. Могу предложить тебе пример для простой таблицы StringGrid:
| Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls; //не забудь объявить модуль StdCtrls, иначе компоненты создать не получится
type TForm1 = class(TForm) StringGrid1: TStringGrid; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; cb: array of TCheckBox; {cb - это массив CheckBox'ов. Как видишь, массив динамический - потому, что тебе не известно...} {...сколько строк будет в таблице}
implementation
{$R *.dfm}
{я создаю компоненты при создании формы, но ты можешь использовать тот обработчик...} {...который более удобен.} procedure TForm1.FormCreate(Sender: TObject); var i: integer; begin SetLength (cb, StringGrid1.RowCount); //устанавливаем длину массива - она равна кол-ву строк таблицы for i := 0 to StringGrid1.RowCount-1 do //и организуем цикл создания элементов CheckBox. begin cb[i] := TCheckBox.Create(self); cb[i].Parent := Self; cb[i].Left := 10; cb[i].Top := i*20; cb[i].Caption := 'CheckBox' + ' ' + IntToStr(i+1); cb[i].Name := 'CheckBox' + IntToStr(i+1); end; end;
procedure TForm1.FormDestroy(Sender: TObject); var i: integer; begin for i := 0 to StringGrid1.RowCount-1 do cb[i].Destroy; //это не обязательно, хотя лучше освободить память end;
end.
|
З.Ы. Заметь, что динамический массив имеет индексы, начинающиеся с нуля, а не с единицы, как у обычных массивов. |