![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TButton [D6, WinXP]
Yakudza © (2002-12-19 16:03:00)Как обработать событие onСlick копки которая создаеться в Run-Time
PVOzerski (2002-12-19 20:14:00) [1]>И для 25 кнопок будет одна и таже процедура ?
>А как передавать параметры. Например разные кнопки запускают >разные программы, нужно onClick передавать разный путь.
А Вы не задумывались о смысле параметра Sender? А ведь он-то как раз и представляет, в данном случае, нажатый экземпляр кнопки. А у него, BTW, есть свойство Tag, очень полезное.
Я уж не говорю о том, что никто не заставляет Вас инкапсулировать метод onClick в классе-наследнике tButton, он моет быть методом чего угодно, той же формы. И присваивайте Вы спокойно значение свойства onClick индивидуально.
Иллюстрации:
type
TForm1 = class(TForm)
...
private
CustomButton:tButton;
procedure CustomButtonClick(Sender:tObject);
....
CustomButton:=tButton.Create(Form1);
CustomButton.Tag:={например}10;
CustomButton.OnClick:=Form1.CustomButtonClick;
....
procedure tForm1.CustomButtonClick(Sender:tObject);//универсальный вариант
begin
if Sender is tButton then
case tButton(Sender).Tag of
1:......
2:......
.....
Val (2002-12-19 19:25:00) [2]>Yakudza © (19.12.02 18:04)
И для 25 кнопок будет одна и таже процедура ?
это уж как обработчики вы для своих кнопок определите.Путь же можно объявить как поле класса и передавать его в процедуру вашу, например, если один обработчик на все кнопки, то в нем и определять этот путь исходя из имени контрола(в обработчик ведь Sender передается).
Yakudza (2002-12-19 18:04:00) [3]И для 25 кнопок будет одна и таже процедура ?
А как передавать параметры. Например разные кнопки запускают разные программы, нужно onClick передавать разный путь.
Skier (2002-12-19 17:18:00) [4]>Yakudza
http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=988625051&n=19
>mrcat
И что ?
mrcat (2002-12-19 17:17:00) [5]Skier © (19.12.02 17:14)
type TNotifyEvent = procedure (Sender: TObject) ofobject;
Skier (2002-12-19 17:14:00) [6]Процедура должна быть методом класса
mrcat (2002-12-19 17:13:00) [7]делаешь процедуру OnClick и в нее пишешь ExecuteProgramm (path : String);
Yakudza (2002-12-19 17:10:00) [8]Мне нужно на onClick повесить :
procedure ExecuteProgramm (path : String);
mrcat (2002-12-19 17:04:00) [9]процедура должна быть типа OnClick
Yakudza (2002-12-19 17:02:00) [10]Incompatible types: "TNoifyEvent" and "procedure"
Song (2002-12-19 16:09:00) [11]Button.onClick:=процедура;