У меня немного глупая, но все же просьба, я что то не соображу как создать по массиву такую программу. Задаю массив, предположим a: array[1..10000] of string;
и мне нужно, чтобы при запуске формы создавалось 10000 модальных кнопок. код для их создания прост, а вот как сделать чтобы создание повторилось 10к раз не пойму.
Другие языки программирования и технологии
Подскажите на счет массива в Delphi
Ну, 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 одинаковых кнопок и одна с сюрпризом :)
Но 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 одинаковых кнопок и одна с сюрпризом :)
при таком количестве контролов ОС будет работать нестабильно или пристрелит программу. .
Обычно все grid-ы делают по-другому: при отрисовке формируется картинка по хранимой информации, а в случае редактирования - создается контрол именно для этого редактирования
Обычно все grid-ы делают по-другому: при отрисовке формируется картинка по хранимой информации, а в случае редактирования - создается контрол именно для этого редактирования
Цикл?
Ну и плюс столько контролов нафиг убьют текущую сессию пользователя.
Ну и плюс столько контролов нафиг убьют текущую сессию пользователя.
Похожие вопросы
- Массив в Delphi
- Придумайте задачку на массив в delphi (pascal)
- Стою на развилке...Подскажите что перспективней начать изучать Delphi, Java, PHP, C++??
- c# Подскажите что такое массив?
- Подскажите на счёт программирования и языков
- Подскажите на счет фотошопа!
- Двумерный массив - Delphi
- Delphi помощь с массивами
- Delphi - Сортировка массива и вывод его в стринг грид
- Components в Delphi. при защите лабораторной возник вопрос... конкретно для Delphi. Что есть массив Components?