![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Куча кнопок
ATLANTIDO © (2002-04-17 23:20:00)Ситуация такая - в процессе работы создется много конопок, функция которых почти однинакова - выдавать сообщение. Т.е. кнопка1 при нажатии выдает сообщение "1" , кнопка2 - "2" и т.д. Как мне это организовать ? Кнопки создаются прогрммно.
2) Как правильно освобождать память при динамическом создании обьектов ?
Создаю:
BitBtns[j]:=TBitBtn.Create(TabSheets[i-1]);
BitBtns[j].Left:=NextX; BitBtns[j].Top:=NextY;
BitBtns[j].Width:=100; BitBtns[j].Height:=100;......
ATLANTIDO (2002-04-18 21:22:00) [1]а я так и сделал ! Спасибо!
Poirot (2002-04-18 21:03:00) [2]Хаха.. я ошибку нашёл.... Вы зачем от класса её берёте...
:=TForm1.блаблабла
надо просто :=длабла
ATLANTIDO (2002-04-18 21:01:00) [3]Спасибо, помогло.
Poirot (2002-04-18 20:56:00) [4]у вас процедура должна быить определена в нутри класса TForm1 в разделе напр Паблик....
И всё работает как надо... тока-что проверил...
ATLANTIDO (2002-04-18 20:24:00) [5]Оператор
BitBtns[j].OnClick:=TForm1.Bitnt_X_Click;
приводит к ошибке "Incompatible types: "TNotifyEvent" and "Procedure"".
Walker (2002-04-18 04:58:00) [6]1)
пишешь процедуру
procedure TForm1.Bitnt_X_Click(Sender: TObject);
var
st: string;
begin
if (Sender is TBitBtn) then
begin
st:="Кнопка "+IntToStr((Sender as TBitBtn).Tag);
Application.MessageBox(PChar(st), "", 0);
end;
end;
затем в цикле...
BitBtns[j].Tag:=j;
BitBtns[j].OnClick:=TForm1.Bitnt_X_Click;
2) если ты при создании указываешь родителя - Owner (а ты это указываешь - TabSheet), то можно не беспокоится, при уничтожении TabSheet сам удалит всё что на нём расположено (точнее своих детей)
но можно удалять и так:
BitBtns[j].Free;
P.S.: Можно обойтись и без массива BitBtns