32 Урока Borland Delphi



Урок 10 - часть 6


  • В недрах VCL Delphi сообщения Windows обрабатываются и преобразуются в более простую для программиста форму;
  • Обработка событий в Delphi сводится к написанию для каждого объекта своих обработчиков;
  • События в программе на Delphi вызываются не только сообщениями Windows, но и внутренними процессами.
        1. Обработка сообщений Windows в Delphi
        Конечно, нельзя придумать такую библиотеку объектов, которые бы полностью соответствовали потребностям программистов. Всегда возникнет необходимость дополнения или изменения свойств и поведения объектов. В этом случае, так же, как и при создании своих собственных компонент в Delphi, часто требуется обрабатывать сообщения Windows. Поскольку Object Pascal является развитием и продолжением Borland Pascal 7.0, то это выполняется сходным с BP способом.

        Общий синтаксис для декларации обработчика сообщений Windows:

        procedure Handler_Name(var Msg : MessageType);

        message WM_XXXXX;

        Handler_Name обозначает имя метода; Msg - имя передаваемого параметра; MessageType - какой либо тип записи, подходящий для данного сообщения; директива message указывает, что данный метод является обработчиком сообщения; WM_XXXXX - константа или выражение, которое определяет номер обрабатываемого сообщения Windows.

        Рассмотрим обработку сообщений на примере. Например, при нажатии правой кнопки мыши на форме в программе появляется всплывающее меню (pop-up menu, если оно было привязано к этой форме). Программист может захотеть привязать к правой кнопке какое-нибудь другое событие. Это можно сделать так:

        type

        TForm1 = class(TForm)

        PopupMenu1: TPopupMenu;

        MenuItem1: TMenuItem;

        MenuItem2: TMenuItem;

        MenuItem3: TMenuItem;

        private

        { Private declarations }

        procedure WMRButtonDown(var Msg : TWMMouse); message

        WM_RBUTTONDOWN;

        public

        { Public declarations }

        end;
         
         

        Подчеркнут код, добавленный в декларацию объекта TForm1 вручную. Далее, в секции implementation нужно написать обработчик:
         
         

        procedure TForm1.WMRButtonDown(var Msg : TWMMouse);

        begin




        Содержание  Назад  Вперед