Энциклопедия C++ Builder



ИСПОЛЬЗОВАНИЕ И СОЗДАНИЕ ВИЗУАЛЬНЫХ КОМПОНЕНТ - часть 18


Существует две категории стандартных событий: определенные для всех компонент и определенные только для оконных компонент (стандартных и оригинальных). Все компоненты наследуют от базового абстрактного класса Tcontrol следующие стандартные события:

OnClick______OnDragDrop___OnEndDrag____OnMouseMove

OnDblClick____| OnDragOver___| OnMouseDown | OnMouseUp

В дополнение к этим событиям, оконные компоненты наследуют от базового абстрактного класса TWinControl

еще и следующие стандартные события:

OnEnter OnKeyDown OnKeyPress
OnKeyUp OnExit

 

 

Чтобы стандартные события вашей компоненты были видимы Инспектору объектов на стадии проектирования или во время выполнения программы, вы должны переопределить свойства событии в секции public или published. Листинг 6.9 показывает, как сделать стандартное событие OnClick видимым.

class TMyControl : public TCustomControl {

_published:

_property OnClick; // OnClick

стало видимым Инспектору };

Листинг 6.9. Переопределение стандартного события

Все стандартные события имеют соответствующие защищенные динамические методы, унаследованные от TControl,

имена которых образованы от названия события без частицы "On". Например, события OnClick вызывают метод Click.

Как правило, вы сначала обращаетесь к наследованному методу, разрешая пользовательскому обработчику события произвести свои действия перед тем, как сработает код вашего переопределения. Предположим, вы пишете новую компоненту, в которой хотите модифицировать реакцию на щелчки мышью. Вместо того, чтобы присвоить соответствующий обработчик события OnClick, как это сделал бы прикладной программист, вы переопределяете защищенный метод Click (Листинг 6.10).

void _fastcall TMyControl::Click() {

// Стандартное обслуживание, включающая вызов обработчика

TWinControl::Click() ;

// Далее следует ваш код переопределения метода

}

Листинг 6.10. Переопределение защищенного метода.

6.4.2.4 Собственные события

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




Содержание  Назад  Вперед