Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpora_proga.docx
Скачиваний:
4
Добавлен:
27.09.2019
Размер:
58.65 Кб
Скачать

21) Обработка событий

Рассмотрим действия операционной системы Windows при нажатии левой кнопки мыши на кнопку в окне.

  1. Нажали на левую кнопку мыши. В регистр фиксации событий(РФС) поступил сигнал, соответствующий левой кнопке мыши разряд был установлен в <1>.

  2. Windows осуществляет периодический опрос РФС. Обнаружив <1>, он узнает, что произошло событие от нажатия левой кнопки мыши. Сигнал принят, а соответствующий разряд РФС записывается в <0>.

  3. Windows определил, что во время нажатия левой кнопки мыши курсор находился в окне приложения. Если у приложения нет окна, то рассматриваемый процесс невозможен. В очередь вычисляемого приложения отправляется сообщение wm_LButtonDown соответствующий нажатию лево кнопки мыши.

  4. У приложения есть свой метод Run.

Procedure TApplication.Run Procedure TApplication.Run

Begin begin

Repeat if not Process Method then Idle

Handle Message end;

Until Terminated;

Во время очередного исполнения цикла опроса очереди метод Process Method обнаружил, что в очереди есть сообщение, wm_LButtonDown.

  1. Process Method определяет, что курсор находился над кнопкой и посылает соответствующее сообщение кнопке

cn_xxx (component Notify)

  1. Кнопка посылает себе сообщение с целью узнать, может ли кнопка обработать сообщение (может, она заблокирована или затенена). Если может выполнить то исполнение шага 7,иначе 13.

  2. Кнопка посылает сообщение вида

cm_xxx (component message)

хозяину, владельцу узнать нет ли препятствий для обработки сообщения.

  1. Аналогичен шагу 6.

  2. Аналогичен шагу 7.

  3. Аналогичен шагу 6.

11,12,13. Ответы на запрос о возможности обработки сообщения.

14. Process Method получив отрицательный ответ вызывает метод обработки сообщений Default Handler из класса TObject. Если получен положительный ответ, то отправляется сообщение <14> кнопке :”можно обработать сообщение”.

15. Кнопка пытается обработать сообщение, мог ут быть отправлены сообщения другим компонентам, все зависит от того, как реализован метод OnClickButton.

В конце приложению поступает ответ, что сообщение обработано. Последний шаг состоит в извлечении сообщений из очереди.

23) Обработка исключительных ситуаций

В языке ObjectPascal важную роль играет обработка исключительных ситуаций, связанных с попыткой выполнения во время работы программы какого-то действия, приводящего к ошибке или просто нарушающего ее функционирование и делающего невозможным дальнейшее нормальное выполнение.

Исключительные ситуации контролируются специальным обработчиком исключительных ситуаций. Он перехватывает практически все возникающие в программе ошибки, приостанавливает программу, не давая выполниться разрушительной команде, и сообщает об этом пользователю и программе, передавая ей информацию об обнаруженной ошибке в виде объекта, относящегося к специальной иерархии классов, описывающих исключительные ситуации. Базовым в этой иерархии является класс Exception. Он описан в модуле SysUtils.

Для оперативного вывода коротких сообщений можно использовать стандартную функцию ShowMessage, которая имеет один параметр-строку и отображает очень похожее диалоговое окно с единственной кнопкой OK:

ShowMessage (‘Это сообщение от программы’);

В библиотеках системы Delphi имеется немало классов, ответственных за обработку различных исключительных ситуаций. В отличие от остальных типов языка, названия которых принято записывать, начиная с буквы T, имена этих классов начинаются с буквы Е ( Exception)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]