В операционной системе Windows классическое понятие объекта было расширено и дополнено. Помимо свойств и методов, объекты обладают еще и событиями (events, Рис. 21.1).
Рис. 25.1. События.
Событие- возникновение определенной ситуации при работе программы. Событиями являются нажатие клавиши, перемещение мыши, истечение интервала времени… Наступление события инициирует или операционная система (если это аппаратное событие), или прикладная программа.
В объектах есть специальные методы - обработчики событий(event handlers). Обработчик событий – обычная процедура, вызываемая на выполнение автоматически при наступлении этого события. Например, есть событие "нажатие клавиши". В ответ на него должен выполняться фрагмент программы, отвечающий за ввод с клавиатуры (Рис. 21.2).
Все программирование под Windows заключается в основном в написании обработчиков событий. Программа для Windows состоит из множества отдельных процедур-обработчиков, вызываемых при наступлении того или иного события (Рис. 21.3).
Рис. 25.2. Обработчик события.
Рис. 25.3. Структура Windows-программы.
Можно сказать, что укрупненная блок-схема любой программы для Windows имеет вид, показанный на Рис. 21.4.
Рис. 25.4 Укрупненная блок-схема программы для Windows.
При программировании на Delphi обработка событий делается следующим образом. Пусть наш объект – кнопка на экране (Рис. 21.5), представленный в программе стандартным объектным типом Tbutton.
Рис. 25.5. Пример объекта – кнопка на экране.
Типичное событие, на которое программа должна отреагировать - щелчок мышкой по кнопке. Программируется это так:
TYPE TMainForm=CLASS(TForm)
…
{ заголовок метода "Щелчок по кнопке" }
procedure Button1Click(Sender: TObject);
…
{ реализация метода "Щелчок по кнопке" }
procedure TMainForm.Button1Click(Sender: TObject);
begin
Close
end;
Остается невыясненным самый главный вопрос: а как объект узнает о наступлении события? Ответ прост: по почте. Объекты посылают друг другу
сообщения (messages). При получении сообщения запускается обработчик соответствующего события (Рис. 21.6).
Рис. 25.6. События и сообщения.
В многозадачных операционных системах, к которым относится и Windows, предусмотрена возможность передачи сообщений (messages) между одновременно находящимися в памяти программами (процессами). Само сообщение не несет никакой дополнительной информации, кроме самого факта его отправки. Однако к сообщению можно прикрепить небольшой объем данных (две переменные типа Longint – 8 байт). Поэтому сообщения чаще всего используются для извещения программ о наступлении того или иного события.
Общая схема работы с сообщениями следующая:
1. Из разрешенного диапазона номеров произвольно выбирается номер пользовательского сообщения N.
2. В программе-отправителе организуется поиск ссылки на окно программы-получателя.
3. Программа-отправитель посылает сообщение найденному окну программы-получателя.
4. В программе-получателе начинает исполняться процедура, связанная с наступлением события «Получение сообщения номер N».