Форум: "Компоненты";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
ВнизСвойства - события Найти похожие ветки
← →
Константинов © (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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.046 c