Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.28;
Скачать: CL | DM;

Вниз

Свойства - события   Найти похожие ветки 

 
Константинов ©   (2006-05-09 01:53) [0]

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

Пока у меня примерно так:

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?

Подскажите как правильно реализовать?
Заранее спасибо.


 
Юрий Зотов ©   (2006-05-09 05:32) [1]

Компонент может создать невидимое окно, тогда адресат появится. Для примера см. TTimer.


 
evvcom ©   (2006-05-10 08:56) [2]

А какой смысл в этом? Ну отработай процедуру до конца, раз так надо, а потом DoMyEvent;



Страницы: 1 вся ветка

Текущий архив: 2007.01.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.053 c
15-1167857316
rolex
2007-01-03 23:48
2007.01.28
NEC 1100


3-1163059970
DelphiLexx
2006-11-09 11:12
2007.01.28
Заблокировать запись


15-1168357595
ocean
2007-01-09 18:46
2007.01.28
Скопировать несколько DVD в один


1-1165072361
Керик
2006-12-02 18:12
2007.01.28
Корректно закрыть процесс


15-1168345518
vasIzmax
2007-01-09 15:25
2007.01.28
"Рукопись"