Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: TNotifyList ?
Форум программистов > Системное программирование > C, С++ и С Builder > Borland C++ Builder & Kylix
Артем
Здравствуйте,
есть такая проблема.

Надо завязать между собой несколько компонентов: один является источником события (надо сигнализировать о некоторого рода изменениях в состоянии компонента), другие должны его отлавливать и обрабатывать.
Как я понял, TNotifyEvent сюда не подойдет, так как он уместен только в случае наличия одного "заинтересованного" компонента.

Нашел в хелпе упоминание о TNotifyList, но оно всего лишь упомнинание, реальной помощи от него нет.

Заранее спасибо.
Sensei
поставь задачу конкретней, просто может оказаться , что не надо так сложно делать, как ты хочешь.
jo1nt
Если я правильно понял вопрос, тебе надо событие рассылать многим подписчикам.

Насколько я помню, в CBuilder для объявления указателя на метод класса используется слово closure(или __closure), но я точного синтаксиса не помню, поэтому в примере напишу на "чистом" С++.
Примерная реализация


class YourClass
{
  
   public:
   typedef void (TObject::*PointerToFunc)(YourClass* Sender);
   std::list<PointerToFunc> pointers;
   void BroadcastEvents(void)
  {
     typedef std::list<PointerToFunc>::iterator pfIter;
    for (pfIter it =pointers.begin(); it!=pointers.end;++it)
    *it(this);
  }
}

соответсвенно, подписаться можно через
pointers.push_back, pointers.push_front.
Тут для простоты pointers объявлены "public", можно написать класс, который бы предоставлял удобный интерфейс для добавления/удаления подписчиков, напр. переопределением "+=" и "-=", в качестве контейнера использовать vector и т.п.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.