Главная страница
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.091 c
5-1127450388
Vcoder
2005-09-23 08:39
2006.03.19
Изменение размера динамического массива из процедуры


15-1140613855
Compton's G
2006-02-22 16:10
2006.03.19
98 понимает NFTS или нет?


2-1141404032
vadim1
2006-03-03 19:40
2006.03.19
TabOrders and TabStops


3-1138197050
galexis
2006-01-25 16:50
2006.03.19
SQL запрос с многими значениями параметра.


15-1140501021
vidiv
2006-02-21 08:50
2006.03.19
"Пятьсотпятидесятимиллиметрового"