![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как вызвать событие [D7]
rds © (2005-09-20 21:07:00)В своем компоненте Определяю событие, как
type TEvent=procedure(Sender:TObject)
....
private
fOnEvent: TEvent;
....
published
property OnEvent: TEvent read fOnEvent write fOnEvent
В процессе работы методов компонента возникает ситуация, когда должно возникнуть это событие. Каким образом это осуществляется. Т.е. я понимаю, что должен стоять соответствующий вызов, но может кто-то приведет краткий пример?
jack128 (2005-09-20 22:02:00) [41]rds © (20.09.05 21:07)
TEvent=procedure(Sender:TObject)
обычно события компонентов отпереляют как методы, а не процедуры: TEvent = procedure (Sender: Tobject) of object;
правда уже существует такой стандартный тип - TNotifyEvent;
вызов обычно делается так:
type
TEsComponent = class(TComponent)
private
fEvent: TNotifyEvent; // обычно в название поля не в ключают приставку On
protected
procedure DoEvent; virtual; // обычно в название метода диспетчеризации включают приставку Do и этот метод делают виртуальным или динамическим
published
property OnEvent: TNotifyEvent read fOnEvent write fOnEvent;
end;
{ TEsComponent }
procedure TEsComponent.DoEvent;
begin
if Assigned(fEvent) tehn
fEvent(Self);
end;
RDS (2005-09-20 21:59:00) [42]спасибо, сечас попробую
Sphinx (2005-09-20 21:30:00) [43]Может ошибусь, но кажется так
if Assigned(fOnEvent) then fOnEvent;