C++ Программирование в среде С++ Builder 5

С точки зрения определения класса


С точки зрения определения класса компонента события являются просто свойствами определенного типа. В том же классе календаря:
private:
TNotifyEvent FOnChange;
published:
property TNotifyEvent OnChange = {read=FOnChange,
write=FOnChange};
Тип свойства-события должен быть так называемым замыканием (closure), о котором мы подробнее расскажем в следующей главе. Пока имейте в виду, что это специального вида указатель на функцию-элемент.
TNotifyEvent — простейший тип события, не имеющий дополнительных параметров кроме указателя па пославший событие объект:
typedef void _fastcall
(closure *TNotifyEvent)(System::TObject* Sender);
События, как и Другие свойства, можно читать и записывать. Инспектор объектов, например, позволяет присноить событию компонента указатель на требуемую процедуру обслуживания.
Особенность событий состоит в том, что они связывают компонент с внешним миром, позволяя компоненту играть активную роль в общении с ним.
При всяком изменении состояния календарь вызывает свой метод Change ():
void _fastcall TCCalendar::Change() {
if(FOnChange)
FOnChange(this);
}
Метод, в свою очередь, вызывает процедуру, указатель на которую записан в поле свойства OnChange.

Содержание раздела