Главная страница
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.47 MB
Время: 0.027 c
1-1140177054
pargo
2006-02-17 14:50
2006.03.19
FreeLibrary -> Invalid pointer operation


11-1122494631
feens
2005-07-28 00:03
2006.03.19
RegisterHotKey (KOL)


15-1141096201
SkyRanger
2006-02-28 06:10
2006.03.19
Рекламма


15-1140725504
Piter
2006-02-23 23:11
2006.03.19
Обрушилась крыша на Басманном рынке


2-1141387966
гостььь
2006-03-03 15:12
2006.03.19
data