Пропустить навигацию.
Главная

Как заставить объекты реагировать на события

Большинство объектов, размещенных на форме, пребывает в состоянии спячки до тех пор, пока к кому-нибудь не поступит определенное сообщение. Сообщение, адресованное конкретному объекту, является следствием какого-либо события (Event), возникающего по инициативе пользователя, служебной или прикладной программы.

События, инициированные пользователем, могут возникнуть в результате взаимодействия человека с клавиатурой или кнопками мыши. К другим событиям, инициатором которых является операционная система, относятся истечение заданного интервала времени (таймер), создание и уничтожение различных окон (форм), активизация или утрата активности такими компонентами как кнопки, окна вывода и т.п. Менее приятными событиями, возникающими в результате алгоритмических ошибок, являются различные аварийные ситуации (Exception) — деление на 0, переполнение разрядной сетки, обращение к библиотечным функциям с недопустимыми значениями аргументов и т.п.

Событие, инициировавшее сообщение тому или иному объекту, может остаться незамеченным, если для обработки этого сообщения в приложении не предусмотрена специальная процедура — обработчик события. Иногда объект может «заметить» пришедшее сообщение, но не сделать ничего полезного. Например, вы щелкнули по кнопке, она изобразила движение вниз, на ее поверхности появился признак активизации (пунктирный прямоугольник), но ничего больше это событие не вызвало. Причина тому — пользователь решил не реагировать на событие, которое не имеет отношения к его приложению.

Что нужно сделать, чтобы приложение выполнило какую-то полезную работу в момент поступления того или иного сообщения? В первую очередь, вы должны предупредить визуальную среду о желании подключить к своему приложению обработчик выбранного события.

В среде VB, находясь в окне редактора программы, вы должны заглянуть в правый список событий, на которые может реагировать выбранный в левом списке компонент. Переместите выделенный прямоугольник на нужное событие и щелкните кнопкой мыши. В поле редактора немедленно появится заготовка для обработчика этого события, включающая заголовок процедуры с перечнем параметров, характерных для данного сообщения. На рис. 2.31 приведен вид экрана в момент начала создания обработчика события Click (щелчок мышью), адресованного форме. Аналогичная операция в среде Delphi и BCB выполняется с помощью закладки Events в окне Инспектора Объектов (Object Inspector) — см. рис. 2.32. Вас не должна смущать небольшая разница в названии процедуры обработчика одного и того же события (Click и OnClick) и наличие дополнительного параметра в передаваемом сообщении. В средах Delphi и BCB любое сообщение включает параметр Seneder, обозначающий объект, инициировавший появление события. Иногда на форме могут располагаться несколько однотипных объектов, а обработчик события — один на всех. В этой ситуации полезно знать, кто из объектов подал сигнал.

IDE

Рис. 2.31. Подготовка к набору обработчика события Click в среде VB

IDE

Рис. 2.32. Подготовка к набору обработчика события OnClick в среде Delphi

К плюсам визуальных сред относится то, что программист не обязан помнить список и тип всех параметров, сопровождающих конкретное сообщение. Автоматически включаемая заготовка пустой процедуры содержит эту информацию, а обращение к разделу Help поможет вам разобраться с каждым из полученных аргументов.