![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Свойства - события
Константинов © (2006-05-09 01:53:00)В компоненте есть некое свойство - событие.
Во время выполнения одной из внутренних процедур компонента необходимо сгенерировать это событие и не дожидаясь, пока пользователь обработает его продолжить выполнение внутренней процедуры.
Пока у меня примерно так:
TMyComponent = class(TComponent)
private
fOnMyEvent : TNotifyEvent;
procedure MyProcedure;
protected
procedure DoMyEvent; dynamic;
published
property OnMyEvent : TNotifyEvent read fOnMyEvent write fOnMyEvent;
end;
implementation
TMyComponent.DoMyEvent;
Begin
If assigned(fOnMyEvent) then fOnMyEvent(Self);
End;
TMyComponent.MyProcedure;
Var I : integer;
Begin
For I := 0 to Max do
Begin
…
DoMyEvent;
…
End;
End;
Думаю нужно применять PostMessage. Но как, что-то вроде:
Private
procedure MyProcedure2( var message : TMessage); message WM_USER + 1;
implementation
TMyComponent.MyProcedure2( var message : TMessage);
Begin
If Assigned(fOnMyEvent) then fOnMyEvent(self);
End;
TMyComponent.MyProcedure;
Var I : integer;
Begin
For I := 0 to Max do
Begin
…
PostMessage( ??? ,WM_USER + 1,0,0);
…
End;
End;
У класса TComponent нет хендла
Куда адресовать PostMessage?
Application.Handle?
Подскажите как правильно реализовать?
Заранее спасибо.
evvcom (2006-05-10 08:56:00) [1]А какой смысл в этом? Ну отработай процедуру до конца, раз так надо, а потом DoMyEvent;
Юрий Зотов (2006-05-09 05:32:00) [2]Компонент может создать невидимое окно, тогда адресат появится. Для примера см. TTimer.