Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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:=процедура;


Наверх

Титульная страница Поиск, карта сайта Написать письмо