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

Для создания нестандартного события рекомендуется придерживаться следующей последовательности действий:

1. Определение инициатора события.

2. Определение типа обработчика события.

3. Создание свойства-события.

4. Создание метода диспетчеризации.

9.3.1. Определение инициатора события

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

Действия пользователя (манипуляции мышью, нажатие клавиш клавиатуры, действия с джойстиком и т. п.) полностью контролируются операционной системой, которая в ответ на эти действия посылает приложению (компоненту) свои сообщения. Подавляющее большинство действий пользователя имеют поддержку в виде ранее рассмотренных стандартных событий. Инициатором нестандартных событий действия пользователя могут быть при его взаимодействии с нестандартными внешними устройствами типа джойстика или сканера. В этом случае компонент должен перехватить нестандартное сообщение Windows, определив соответствующую процедуру с зарезервированным словом message, подобно тому как определяются соответствующие перехватчики стандартных сообщений. Например, стандартное сообщение WM_PAINT перехватывается следующим образом:

type TMyComponent * class (...) private procedure Paint(var Message: TWMPaint);
message WM_PAINT;
end;

Подробнее тема создания события в ответ на сообщение Windows рассматривается в 9.4.

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

9.2.3. Изменение обработчиков стандартных событий || Оглавление || 9.3.2. Определение типа обработчика события


Искусство создания компонентов Delphi



Новости за месяц

  • Июль
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31