Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции програм_new_последняя версия1.doc
Скачиваний:
14
Добавлен:
14.09.2019
Размер:
697.34 Кб
Скачать

Программирование реакции на событие

Щелкнув в Инспекторе объектов на странице Events в поле события, получим в программе заготовку метода нужного типа. Пусть, например, на форме Form1 есть текст метки Label1. Тогда для обработки щелчка мышью (событие OnClick) на элементе управления Label1 будет создана заготовка метода TForm1. Label1Click:

Procedure TForm1.Label1Click(Sender: TObject);

Begin

. . . . . .

End;

Метод Label1Click был передан как значение свойству OnClick объекта Label1 стандартного класса TLabel. Теперь остается вписать нужный программный код.

Особенности реализации событий

Сообщения о наступлении события поступают от Windows. Их сотни. Работать с ними сложно. Одно из больших достижений Delphi состоит в том, что программист не работает с со­общениями Windows, хотя такая возможность у него есть. Он работает со стандартными событиями Delphi, а их около 20 и работать с ними проще.

Рассмотрим, как реализованы события.

Во время выполнения приложения Delphi вызовы обработчиков событий находятся в мето­дах, обрабатывающих сообщения Windows. В этих методах проверяется, известен ли адрес обработчика события, и, если он есть, то обработчик события вызывается.

События различны, но общим для них является параметр Sender типа TObject и ключевая фраза of object после описания типа. Параметр Sender: TObject – отправитель, он указывает на источник события. Помимо явно описанных параметров методу передается еще и Self – указатель на вызвавший его экземпляр (объект).

Самый простой тип события – TNotifyEvent, сообщение об этом событии не имеет других параметров, кроме Sender.

Тип события является указателем на метод, он определяется в самом простом стандартном случае так:

type

TNotifyEvent= procedure( Sender:TObject) of object;

Здесь Sender - параметр, указывающий на источник события.

Обратите внимание! Тип TNotifyEvent - это процедурный тип. Тогда событие OnClick - это свойство процедурного типа TNotifyEvent:

Property OnClick:TNotifyEvent;

События имеют разное количество и тип параметров в зависимости от происхождения и предназначения. Delphi определяет состав событий, на которые может реагировать каждый управляющий элемент формы. Список этих событий представляется на странице Events Инспектора объектов для каждого компонента. Традиционно может быть предусмотрена реакция на 3 вида событий от пользователя:

  1. на нажатие и отпускание любой из кнопок мыши,

  2. перемеще­ние курсора мыши

  3. нажатие клавиш клавиатуры.

При извещении о нажатии клавиши методу передает­ся код нажатой клавиши, а при передвижении мыши - координаты ее положения.

По умолчанию, форма и компоненты не отвечают ни на какое заранее установленное со­бытие. Чтобы приложение реагировало на определенные события, должен быть написан код (метод), определяющий его реакцию на данное событие. Для этого Delphi в разделе interface класса формы добавит строку с заголовком метода обработки события и в разделе реализации implementation разместит заголовок метода и пустой блок для реализации этого метода.