Форум: "Основная";
Текущий архив: 2006.03.19;
Скачать: [xml.tar.bz2];
ВнизСобытие с несколькими обработчиками Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c