Другие языки программирования и технологии

Подскажите на счет массива в Delphi

У меня немного глупая, но все же просьба, я что то не соображу как создать по массиву такую программу. Задаю массив, предположим a: array[1..10000] of string;
и мне нужно, чтобы при запуске формы создавалось 10000 модальных кнопок. код для их создания прост, а вот как сделать чтобы создание повторилось 10к раз не пойму.
Ну, 10000 кнопок создать я не рискну, потому что это действительно вряд ли кончится добром.
Но 100 штук можно так:

unit main;

interface

uses Windows, Messages, SysUtils, Forms, StdCtrls;

const N = 100;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure ButtonClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
end;

var
Form1: TForm1;
a:array[1 .. N] of TButton;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
randomize;
for i := 1 to N do
begin
a[і] := TButton.Create(Form1);
a[і].Parent := Form1;
a[і].Height := 20;
a[і].Width := 20;
a[і].Left := (i - 1) mod 10 * 20;
a[і].Top := (i - 1) div 10 * 20;
a[і].Tag := random(10);
a[і].Caption := IntToStr(a[і].Tag);
a[і].OnClick := ButtonClick
end;
i := random(N) + 1;
a[і].Caption := 'Q';
a[і].Tag := -1
end;

procedure TForm1.ButtonClick(Sender: TObject);
begin
with (Sender as TButton) do
if Tag < 0 then
Close
else
begin
Tag := Tag + 1;
Caption := IntToStr(Tag)
end
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var i:integer;
begin
for i := 1 to N do
a[і].Free
end;

end.

P.S. 99 одинаковых кнопок и одна с сюрпризом :)
Арман )))
Арман )))
51 590
Лучший ответ
при таком количестве контролов ОС будет работать нестабильно или пристрелит программу. .
Обычно все grid-ы делают по-другому: при отрисовке формируется картинка по хранимой информации, а в случае редактирования - создается контрол именно для этого редактирования
Arman Абдреев
Arman Абдреев
97 440
Цикл?
Ну и плюс столько контролов нафиг убьют текущую сессию пользователя.