
Программирование / Делфа длАТПП-01 / Билет5
.docВОПР 5
События
Событие — это специальное свойство, являющееся указателем функции. Тип обобщенного указателя на функцию, которой передается один параметр типа ТОЬject (обычно Self — данный объект), — TNotifyEvent. Подобный тип используется в Delphi для событий типа OnClick и многих других, которые передают в обработчик только один параметр — Sender: TObject. Если требуется ввести в класс подобное событие, достаточно определить в объявлении класса соответствующее поле и метод работы с ним. Например:
private
FMyEvent: TNotifyEvent;
published
property MyEvent: TNotifyEvent read FMyEvent write FMyEvent;
При возникновении события надо проверять функцией assigned, которая возвращает true, имеется ли обработчик пользователя, и, если имеется, то вызвать его. Для этого можно использовать оператор вида:
if assigned(FMyEvent) then OnMyEvent(Self);
Функция OnMyEvent, которая вызывается этим оператором, это и есть обработчик пользователя. Его имя совпадает с именем свойства, перед которым добавляется префикс «On».
Место, куда надо включать подобный оператор, зависит от вида события. Если событие вызывается каким-то из ваших методов, то вызов обработчика пользователя надо осуществлять из этого метода. Если событие связано с какими-то сообщениями, поступающими от других приложений или от Windows, то надо предусмотреть обработчик соответствующего сообщения и из него вызывать обработчик пользователя.
Выше было рассмотрено введение в класс какого-то нового события. Если же вам надо переопределить одно из традиционных событий, связанных с клавиатурой, мышью и т.п., то это можно сделать, переопределив соответствующий стандартный обработчик родительского класса.
Обработчики сообщений.
Обработчики сообщений используются в программах очень часто и являются необходимой вещью. Они определяют любое действие, которое может совершить пользователь. Обработчик - это есть указатель на процедуру, которая выполняется при проявлении того или иного события. Пользователь может описать то, что будет делать
программа при выполнении того или иного действия. В основном все обработчики одинаковы для всех классов, но для каждого класса существуют свои, специфические обработчики.
Познакомимся с основными из них на примере обработчиков TEdit:
• OnChange - программа реагирует на изменение значений компоненты (например, на каждое вводимое значение)
• OnClick - программа реагирует на нажатие клавиши мыши на эту компоненту.
• OnDoubleClick (DblClick) - двойное нажатие клавиши мыши.
• OnKeyPress - программа реагирует на нажатие клавиши клавиатуры.