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.




Начало  Назад  Вперед



Книжный магазин