![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как создать массив кнопок?
Vinivor © (2002-05-05 13:41:00)Народ, подскажите пожалиста, как же сделать массив кнопок?
Динамически нужно создать достаточно большое количество кнопок, создать то я их создал, только событие OnClick прикрутить не могу.
Fay (2002-05-07 08:09:00) [1]> Как создать массив кнопок?
a : array of TButton
8)
KSergey (2002-05-06 09:55:00) [2]Ошибку выдает - это приятно
Если нет ошибок - значит они есть, но их не видно...
А написать что за ошибку и в каком месте - сложно?
К слову, чтобы не было ругани по поводу совпадающих имен компонент можно св-ству Name присваивать всегда пустую строку.
А вообще - почитайте статью "Жизнь и смерть в режиме run-time" на Королевстве дельфи - дусаю множество вопросов у вас отпадет
(сегодня даже не поленился и даю точную ссылку http://delphi.vitpc.com/helloworld/runtime_comp.htm
Так же прочитайте все статьи из раздела "Hello, World!" - найдете массу интересного, я вас уверяю http://delphi.vitpc.com/helloworld/index.htm)
arhelon (2002-05-06 08:55:00) [3]А че слабо посмотреть исходник TMessageDlg ???
Vinivor (2002-05-05 21:49:00) [4]А вот и не получается!
Ошибку выдает.
New := TSpeedButton.Create(Self);
New.Flat := True;
New.Font.Color := clBtnFace;
New.Layout := blGlyphTop;
New.Caption := LabeledEdit2.Text;
New.ClientHeight := 70;
New.ClientWidth := 70;
New.Glyph := Image1.Picture.Bitmap;
New.Cursor := crHandPoint;
New.Left := BL[LB1.ItemIndex];
New.Top := BT[LB1.ItemIndex];
New.Name := "SB" + IntToStr(Name1);
New.OnClick := NewClick;
LB2.Items.Add(New.Name + " "" + LabeledEdit2.Text + """);
New.Tag := LB2.ItemIndex;
New.Parent := Form1.PageControl1.Pages[LB1.ItemIndex];
Примерно так.
Так вот работает, а как только пытаюсь прикрутить номер, вываливает ошибку.
SPeller (2002-05-05 14:21:00) [5]>ButtonNumber:=tbutton(sender).click;
Надо так:
ButtonNumber:=tbutton(sender). Tag;
SPeller (2002-05-05 14:18:00) [6]var buttons:=array of tbutton;
implementation
...
setlength(buttons,n);
for i:=1 to n do begin
buttons[i]:=tbutton.create;
buttons[i].tag:=i;
buttons[i].OnClick:=MyProcClick;
end;
Теперь все они будут вызывать MyProcClick при нажатии. А определять какая из них вызвала обработчик вот так:
procedure tform1.MyProcClick(sender:tobject);
var ButtonNumber:integer;
begin
ButtonNumber:=tbutton(sender).click;
...
end;
Anatoly Podgoretsky (2002-05-05 13:56:00) [7]Там где создал, сразу делай .OnClick := ....;