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

Вниз

Событие с несколькими обработчиками   Найти похожие ветки 

 
BFG9k ©   (2006-02-14 16:58) [0]

Необходимо назначить одному событию несколько обработчиков, так чтобы они выполнялись последовательно.

Пример :


class MyClass
...
fOnSomething:TNotifyEvent;
...
property OnSomething:TNotifyEvent read fOnSomething write fOnSomething;
end;

....

procedure MyClass.SomeProc;
begin
...
 if Assigned(fOnSomething) then
   fOnSomething(Self);
...
end;


Недостаток механизма в том, что OnSomething можно назначить однажды. Хотелось бы из разных мест программы организовать что-то вроде подписки на события, чтобы в результате выполнялось что-то вроде :


procedure MyClass.SomeProc;
begin
...
 if Assigned(fOnSomething1) then
   fOnSomething1(Self);

 if Assigned(fOnSomething2) then
   fOnSomething2(Self);

....

 if Assigned(fOnSomethingN) then
   fOnSomethingN(Self);
...
end;


Кто-нибудь сталкивался с реализацией подобных механизмов ? Может быть имеются стандартные средства дельфи (вроде ApplicationEvents), которые позволяют организовать множественность обработчиков одного события ?


 
Ega23 ©   (2006-02-14 17:05) [1]

Дык, вроде, и последовательного механизма хватает...


 
Digitman ©   (2006-02-14 17:25) [2]

Назначаешь "обычному" событию "обычный" же обработчик.
А в теле назначенного тобой обработчика творишь все что угодно.


 
Гаврила ©   (2006-02-14 19:45) [3]


> BFG9k ©  


Заведи список.
Туда можно добавлять сами события
а можно завести некий промежуточный класс, типа "link"
экземпляр которого добавляется в список
в момент OnSomething идет оповещение link"ов в цикле
а каждый линк в свою очередь оповещает своего "хозяина"
понятно изложил?)


 
Leonid Troyanovsky ©   (2006-02-14 19:46) [4]


> BFG9k ©   (14.02.06 16:58)  
> Необходимо назначить одному событию несколько обработчиков,
>  так чтобы они выполнялись последовательно.


http://groups.google.com/group/fido7.ru.delphi/msg/4ab8efecc7f3f6eb

--
Regards, LVT.



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

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

Наверх




Память: 0.48 MB
Время: 0.041 c
15-1140874980
WondeRu
2006-02-25 16:43
2006.03.19
Как организовать связь между приложением и ISAPI (CGI) модулем?


15-1140795075
Piter
2006-02-24 18:31
2006.03.19
Как вытащить данные с CD-RW, которой сделали "Быструю очистку"?


2-1141593004
Jrek
2006-03-06 00:10
2006.03.19
разрешение монитора


15-1140616689
Silica
2006-02-22 16:58
2006.03.19
Документация


2-1141495439
Alex_C
2006-03-04 21:03
2006.03.19
Прокрутка текста на последнюю позицию в RichEdit