Реакции на события

Begin

Объектно-событийное программирование. События

Begin

Var

Label1:TLabel;

Label1:= TLabel.Create(Self);

Label1.Parent:=Self;

Label1.Caption:='Дочерний элемент';

end;

Если убрать оператор

Label1.Parent:=Self;

то метка Label1 никогда не узнает о том, что пришла пора прорисовать себя на экране и ее текст не будет виден. Наоборот, изменение свойства Parent подключает метку к списку дочерних элементов формы, и оконная функция формы обратится к нужному методу метки, чтобы заставить ее появиться на экране в момент появления самой формы.

Программистам, работающим в Windows можно не пояснять смысл слова событие. Сама среда Windows и написанные в ней программы управляются событиями, возникающими в результате действия пользователя, а также аппаратуры ПК и других программ. Программирование, ориентированное на события - неотъемлемая черта Windows. Delphi предоставляет полный доступ к подструктуре событий, предоставляемой Windows. С другой стороны, Delphi упрощает программирование обработчиков таких событий.

Событие – это свойство процедурного типа, предназначенное для создания пользовательской реакции на те или иные входные воздействия:

Property OnMyEvent:TMyEvent read FOnMyEvent

write FOnMyEvent;

Здесь OnMyEvent – имя свойства, TMyEvent – процедурный тип; FOnMyEvent – есть поле объекта, содержащее адрес некоторого метода. Присвоить свойству значение – значит указать объекту адрес метода, который будет вызван в момент наступления события.

В Delphi принято называть событиями специальные свойства процедурного типа, которым в качестве значений присваиваются имена методов, где описана реакция на событие. Такие методы называются обработчиками событий.

Все события Delphi принято предварять префиксом On. Например, OnClick – событие при щелчке клавиши мыши, OnKeyPress – при нажатии любой клавиши клавиатуры, OnCreate – при создании компонента, OnMouseMov e – при перемещении мыши.

Щелкнув в инспекторе объектов на странице Events в поле нужного события, вы получите в программе заготовку метода нужного типа. При этом имя метода будет состоять из имени текущего компонента и имени события (без префикса on), относиться он будет к текущей форме. Например, пусть на форме Form1 есть кнопка Button1, тогда для обработки щелчка мыши на кнопке (событие OnClick) будет создана заготовка метода:

procedure Form1.Button1Click(Sender:TObject);

......{вставить программный код}

end;

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

Для организации реакции на события можно:

1. Проигнорировать событие, т.е. не писать процедуры для реакции на это событие, при этом поведение объекта определяется по умолчанию;

2. Перехватить событие, для этого надо написать текст процедуры – обработчика собы­тия, при этом можно модифицировать или изменить поведение объекта, задаваемое по умолча­нию. Это может быть, например, изменение вида курсора при попадании в определенную область на экране или изменение доступности компонента с помощью свойства Enabled.

Например, последовательность действий при перехватывании события OnClick - щелчка мыши для управляющей кнопки Button1, состоит в следующем:

1. Возникает событие нажатия на кнопку с именем Button1, для этого пользователь уста­новит курсор на кнопку и нажмет левую клавишу мыши (т.е. осуществит щелчок мыши по кнопке Button1), возникнет событие по имени OnClick - щелчок на кнопке;

2. Объект Button1 перехватывает это событие, так как для него имеется обработчик собы­тия;

3. Delphi ищет процедуру с именем, соответствующим имени задействованного объекта (Button1) и имени события (OnClick), т.е. процедуру Button1Click.

Имя процедуры обработчика события состоит из Buttonl1 – имени объекта, на котором произошло событие, и Click – имени события (без префикса On).

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: