- •Часть II
- •11) Диаграмма объектов
- •14) Диаграммы модулей
- •15) Диаграмма процессов
- •Часть III
- •6)Инкапсуляция
- •7)Наследование
- •13) Важнейшие классы. TPersistent.
- •14) Важнейшие классы. TComponent.
- •15) Важнейшие классы. TApplication
- •16) Важнейшие классы. TScreen
- •17) Важнейшие классы. TPrinter
- •18) Важнейшие классы. TForm
- •19) Важнейшие классы. TClipBoard.
- •20) Важнейшие классы tIniFile
- •21) Обработка событий
- •23) Обработка исключительных ситуаций
- •24) Разработка приложений по стандарту mdi
- •25) Разработка приложений по стандарту sdi.
21) Обработка событий
Рассмотрим действия операционной системы Windows при нажатии левой кнопки мыши на кнопку в окне.
Нажали на левую кнопку мыши. В регистр фиксации событий(РФС) поступил сигнал, соответствующий левой кнопке мыши разряд был установлен в <1>.
Windows осуществляет периодический опрос РФС. Обнаружив <1>, он узнает, что произошло событие от нажатия левой кнопки мыши. Сигнал принят, а соответствующий разряд РФС записывается в <0>.
Windows определил, что во время нажатия левой кнопки мыши курсор находился в окне приложения. Если у приложения нет окна, то рассматриваемый процесс невозможен. В очередь вычисляемого приложения отправляется сообщение wm_LButtonDown соответствующий нажатию лево кнопки мыши.
У приложения есть свой метод 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.
Process Method определяет, что курсор находился над кнопкой и посылает соответствующее сообщение кнопке
cn_xxx (component Notify)
Кнопка посылает себе сообщение с целью узнать, может ли кнопка обработать сообщение (может, она заблокирована или затенена). Если может выполнить то исполнение шага 7,иначе 13.
Кнопка посылает сообщение вида
cm_xxx (component message)
хозяину, владельцу узнать нет ли препятствий для обработки сообщения.
Аналогичен шагу 6.
Аналогичен шагу 7.
Аналогичен шагу 6.
11,12,13. Ответы на запрос о возможности обработки сообщения.
14. Process Method получив отрицательный ответ вызывает метод обработки сообщений Default Handler из класса TObject. Если получен положительный ответ, то отправляется сообщение <14> кнопке :”можно обработать сообщение”.
15. Кнопка пытается обработать сообщение, мог ут быть отправлены сообщения другим компонентам, все зависит от того, как реализован метод OnClickButton.
В конце приложению поступает ответ, что сообщение обработано. Последний шаг состоит в извлечении сообщений из очереди.
23) Обработка исключительных ситуаций
В языке ObjectPascal важную роль играет обработка исключительных ситуаций, связанных с попыткой выполнения во время работы программы какого-то действия, приводящего к ошибке или просто нарушающего ее функционирование и делающего невозможным дальнейшее нормальное выполнение.
Исключительные ситуации контролируются специальным обработчиком исключительных ситуаций. Он перехватывает практически все возникающие в программе ошибки, приостанавливает программу, не давая выполниться разрушительной команде, и сообщает об этом пользователю и программе, передавая ей информацию об обнаруженной ошибке в виде объекта, относящегося к специальной иерархии классов, описывающих исключительные ситуации. Базовым в этой иерархии является класс Exception. Он описан в модуле SysUtils.
Для оперативного вывода коротких сообщений можно использовать стандартную функцию ShowMessage, которая имеет один параметр-строку и отображает очень похожее диалоговое окно с единственной кнопкой OK:
ShowMessage (‘Это сообщение от программы’);
В библиотеках системы Delphi имеется немало классов, ответственных за обработку различных исключительных ситуаций. В отличие от остальных типов языка, названия которых принято записывать, начиная с буквы T, имена этих классов начинаются с буквы Е ( Exception)