VCL Delphi для Win32 - несколько обработчиков событий

Функциональное программирование уже завоевало популярность, по моему скромному мнению, это просто не очень видимо все же. Сила таких языков является mathematics/algorhithms, который является одной из причин, почему Парни Halo используют его для своего материала TrueSkill.

13
задан migajek 8 September 2009 в 22:43
поделиться

4 ответа

Я реализовал решение, которое работает практически в любой версии Delphi - изначально оно было реализовано в Delphi 7, хотя я не тестировал его в более ранних версиях (но если вы используя Delphi 7 самостоятельно, тогда это все, что вам нужно знать, верно?). :)

iirc это было, по крайней мере, частично вдохновением для сообщения Аллена Бауэра. Вы можете увидеть мою реализацию, продемонстрированную в некоторых видеороликах, и загрузить код из моего блога :

Интересующие вас сообщения помечены как "многоадресная рассылка". Ссылка для загрузки окончательного кода доступна в этом сообщении .

В моем подходе вы наследуете класс от TMultiCastEvent. Все, что нужно сделать вашему производному классу, - это реализовать некоторую простую защиту типа для добавления, удаления и вызова события с определенной сигнатурой. такие как возможность отключать события и автоматически удалять обработчики из обработчиков при уничтожении реализующего объекта (это включает в себя небольшую служебную деятельность, которую можно игнорировать, если необходимо, но которая может быть полезна при определенных обстоятельствах).

Все это описан и продемонстрирован в моих сообщениях в блоге.

Наслаждайтесь. :)

10
ответ дан 2 December 2019 в 00:46
поделиться

У Аллена Бауэра есть сообщение в блоге о многоадресных событиях , которое может быть полезным. Однако это работает только для Delphi 2009 или новее.

РЕДАКТИРОВАТЬ: Если вы все еще используете D7, вы все равно сможете выполнить эту работу, если вам не нужно слишком много разных сигнатур событий. Попробуйте посмотреть на Аллена '

2
ответ дан 2 December 2019 в 00:46
поделиться

Для этого вы можете использовать шаблон проектирования наблюдателя. Вот пример реализации delphi: http://blogs.teamb.com/joannacarter/2004/06/30/690

0
ответ дан 2 December 2019 в 00:46
поделиться

Если вы реализуете систему плагинов, я думаю, вы не сможете просто обойтись без обработчиков событий - будь то многоадресная рассылка или нет. Предлагаю взглянуть на паттерн наблюдателя . Может показаться слишком многословным рядом с многоадресными событиями, но, по крайней мере, более гибким, когда вам нужно.

1
ответ дан 2 December 2019 в 00:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: