Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Как присвоить событие в run-time?

Delphi , Технологии , Объектно-ориентированное программирование

Как присвоить событие в run-time?

Пример стандартного присвоения события в run-time:
 
Code:
type
{ www. drkb. ru,
®Vit (Vitaly Nevzorov) - nevzorov@yahoo.com}
 
TForm1 = class(TForm)
   Button1: TButton;
   procedure FormCreate(Sender: TObject);
private
   procedure Click(Sender: TObject);
end;
 
var Form1: TForm1;
 
implementation
 
procedure TForm1.Click(Sender: TObject);
begin
// do something
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
button1.OnClick:=Click;
end;
 
end.
 

Автор: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Взято с Vingrad.ru http://forum.vingrad.ru
 

 
А как сделать чтобы "procedure Click" была не методом класса, а отдельно стоящей функцией?
 
Code:
{www. drkb. ru}
 
procedure Click(Self: TObject; Sender: TObject);
begin
...
end;
 
var
evhandler: TNotifyEvent;
TMethod(evhandler).Code := @Click;
TMethod(evhandler).Data := nil;
Button1.OnClick := evhandler;
 
Без извращений можно так:
 
TDummy = class
   class procedure Click(Sender: TObject);
end;
 
Button1.OnClick := TDummy.Click;
Автор ответа: Le Taon
Взято с Vingrad.ru http://forum.vingrad.ru

 
По идее, при вызове OnClick первым параметром будет запихнут указатель на экземпляр того класса который в этом OnClick хранится . Я в низкоуровневой реализации не силен, но кажись, так как параметры в процедурах в Delphi передаются через регистры, то ничего страшного не произойдет.
 
Code:
{www. drkb. ru}
procedure C(Self:pointer;Sender:TObject);
begin
TButton(Sender).Caption:='ee';
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
@Button1.OnClick:=@c;
end;
 
 
Self тут у нас будет равен nil, а Sender как раз и получается Sender'ом.
 
Автор: Fantasist
Взято с Vingrad.ru http://forum.vingrad.ru

Статья Как присвоить событие в run-time? раздела Технологии Объектно-ориентированное программирование может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Объектно-ориентированное программирование ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-04-24 22:55:34
2024-04-25 14:58:56/0.0066878795623779/2