Главная страница
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.049 c
1-1139233050
Дмитрий_177
2006-02-06 16:37
2006.03.19
CoolBar


1-1139819308
Maverick
2006-02-13 11:28
2006.03.19
Сохранение пользовательских настроек


2-1141152193
tyo
2006-02-28 21:43
2006.03.19
мелкий/крупный шрифт


2-1141040079
Matteus_
2006-02-27 14:34
2006.03.19
RTF в TEXT


2-1141021615
Wel
2006-02-27 09:26
2006.03.19
игра Сапер