Главная страница
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.039 c
4-1135861779
FireMan_Alexey
2005-12-29 16:09
2006.03.19
Подскажите как добавить свой пункт в контекстное меню Explorer-a


1-1139913835
Dima1
2006-02-14 13:43
2006.03.19
Вопрос по ABBYY lingvo


6-1134102665
Kolyan
2005-12-09 07:31
2006.03.19
Outlook Express


15-1139496600
oldman
2006-02-09 17:50
2006.03.19
Завтра начинается Зимняя Олимпиада.


2-1141445077
anubis
2006-03-04 07:04
2006.03.19
Как заполнять таблицу програмным путём