Справочное руководство по Delphi

       

События в Delphi


  • Объекты из библиотеки визуальных компонент (VCL) Delphi, равно как и объекты реального мира, имеют свой набор свойств и свое поведение - набор откликов на события, происходящие с ними. Список событий для данного объекта, на которые он реагирует, можно посмотреть, например, в Инспекторе Объектов на странице событий. (На самом деле, на этой странице представлен список свойств, которые имеют тип вроде TMouseMoveEvent и представляют из себя процедуры-обработчики событий. Существует соглашение по названиям данных свойств. Например, OnDblClick соответствует двойному щелчку мыши, а OnKeyUp - событию, когда нажатая клавиша была отпущена.) Среди набора событий для различных объектов из VCL есть как события, портируемые из Windows (MouseMove, KeyDown), так и события, порождаемые непосредственно в программе (DataChange для TDataSource).
  • Поведение объекта определяется тем, какие обработчики и для каких событий он имеет. Создание приложения в Delphi состоит из настройки свойств используемых объектов и создания обработчиков событий.

    Простейшие события, на которые иногда нужно реагировать - это, например, события, связанные с мышкой (они есть практически у всех видимых объектов) или событие Click для кнопки TButton. Предположим, что вы хотите перехватить щелчок левой кнопки мыши на форме. Чтобы сделать это - создайте новый проект, в Инспекторе Объектов выберите страницу событий и сделайте двойной щелчок на правой части для свойства OnClick. Вы получите заготовку для обработчика данного события:

    procedure TForm1.FormClick(Sender: TObject);

    begin

    end;

    Напишите здесь следующее:

    procedure TForm1.FormClick(Sender: TObject);

    begin

    MessageDlg('Hello', mtInformation, [mbOk], 0);

    end;

    Каждый раз , когда делается щелчок левой кнопки мыши над формой будет появляться окно диалога (см. рис.1).



    Рис.1: Диалог, появляющийся при щелчке мыши на форме.

    Код, приведенный выше, представляет из себя простейший случай ответа на событие в программе на Delphi. Он настолько прост, что многие программисты могут написать такой код и без понимания того, что они на самом деле отвечают на сообщение о событии, посланное им операционной системой. Хотя программист получает это событие через третьи руки, тем не менее он на него отвечает.


    Опытные программисты в Windows знают, что при возникновении события, операционная система передает вам не только уведомление о нем, но и некоторую связанную с ним информацию. Например, при возникновении события “нажата левая кнопка мыши” программа информируется о том, в каком месте это произошло. Если вы хотите получить доступ к такой информации, то должны вернуться в Инспектор Объектов и создать обработчик события OnMouseDown:
    procedure TForm1.FormMouseDown(Sender: TObject;
    Button: TMouseButton;
    Shift: TShiftState;
    X, Y: Integer);
    begin
    Canvas.TextOut(X, Y, 'X='+IntToStr(X)+' Y='+IntToStr(Y));
    end;
    Запустите программу, пощелкайте мышкой на форме:

    Рис.2
    Как видите, в Delphi очень просто отвечать на события. И не только на события, связанные с мышкой. Например, можно создать обработчик для OnKeyDown (нажата клавиша):
    procedure TForm1.FormKeyDown(Sender: TObject;
    var Key: Word;
    Shift: TShiftState);
    begin
    MessageDlg(Chr(Key), mtInformation, [mbOk], 0);
    end;
    Теперь, когда вы имеете начальные знания о программировании событий в Delphi, самое время вернуться назад и посмотреть на теорию, стоящую за тем кодом, что вы написали. После получения представления о том, как работает система, можно вернуться к среде Delphi и посмотреть, как использовать полностью имеющиеся возможности.

    Содержание раздела