Лекция

Тема: Создание и обработка сообщений и событий. Сообщения Delphi. Методы обработки сообщений. Генерация сообщений. Создание событий. Обработка сообщений VCL. Управление циклом обработки сообщений.

Цель: познакомить с методами обработки сообщений

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

1.                  описать тип сообщения;

2.                  объявить номер (или индекс) сообщения;

3.                  объявить метод обработки нового сообщения в классе, который должен его обрабатывать;

4.                  инициализировать (передать) сообщение.

Сообщения Delphi. В Delphi определено около 100 стандартных типов сообщений. В соответствии с правилами Windows сообщение состоит из нескольких полей. Первое поле обычно называется Msg. Оно должно содержать индекс сообщения - 16 разрядное целое положительное число (тип Cardinal). Далее следуют поля, содержащие передаваемые значения. Последние поля обычно используются для записи результата обработки сообщения. Они могут отсутствовать.

Например, основной тип сообщений, используемых в Delphi, определяется следующим образом:

Type TMessage=record
Msg:Cardinal;
case Integer of
0: (WParam:LongInt; LParam:LongInt; Result:LongInt);
1: (WParamLo:Word; WParamHi:Word;
LParamLo:Word; LParamHi:Word;
ResultLo:Word; ResultHi:Word);
end;
end;

Номер сообщения. Номер (или индекс) сообщения используется для идентификации сообщения в системе: он определяет вид события, о котором система уведомляет приложение (нажатие клавиш, нажатие кнопок мыши и т.д.).
При создании собственных сообщений следует учитывать, что номера с 0 до $399 зарезервированы за системой. Первый свободный номер обозначен константой WM_USER = $400, относительно которой обычно и определяются номера пользовательских сообщений:

Const Mes1 = WM_USER;
Mes2 = WM_USER+1;
Методы обработки сообщений. Класс, объекты которого должны принимать и обрабатывать некоторые сообщения, должен включать специальные методы обработки этих сообщений. При разработке этих методов необходимо учитывать специальные правила, существующие в Delphi.

Метод обработки сообщения по умолчанию является динамическим, причем спецификаторы dinamic или override при его описании опускаются:

Procedure wm<имя метода>(var Message:<тип сообщения>);
message <номер сообщения>;

Имена методов обработки некоторого сообщения, переопределяемых в иерархии классов, могут не совпадать: переопределяемый метод идентифицируется по совпадающему номеру сообщения, указываемому после специальной директивы message. Номер сообщения обычно задается в виде символического имени, но может указываться и целой положительной константой.

Добавление метода обработки сообщений к классу выполняется так же, как и любого другого метода:

type <имя класса>= class <имя класса-родителя>
public
Procedure wm<имя метода>(var Message:<тип сообщения>);
message <номер сообщения>;
. . .
end.

Контрольные вопросы

1.      Какие действия нужно выполнить для создания нового сообщения

2.      Для чего используется номер (или индекс) сообщения для идентификации


Ұқсас жұмыстар

Жоғарғы оқу орнындағы лекция және оқу жұмысын ұйымдастырудың басқа формалары мен әдістері
Жоғарғы оқу орнындағы лекция. Ағымдағы лекция
Сабақ кестесі
Жоо-дағы оқу процесін ұйымдастыру формалары
Тіл білімінің өзекті мәселелері пәнінің оқу -әдістемелік кешені
Информатика пәні бойынша сыртқы бөлімге арналған тапсырмалар жинағы
Тіл философиясы – тілдің философиялық қызметі жөніндегі ғылым
Семинар сабақтарда пәннің мазмұны бойынша проблемалық оқыту принципін іске асыру
Жоғары оқу орындағы тәрбие мен оқытудың теориясы
Бастауыш сыныпта дүниетануды оқыту әдістемесі