Событийно управляемое программирование
Рассмотрим простую и естественную модель событийно управляемого и визуального программирования, характерную для Delphi. В типовой модели у приложения три составляющие: визуальная, системная и обработчики событий (рис.1).
Рис. 1. Составляющие событийно управляемого программирования.
Визуальная составляющая задает образ на экране, с которым будет работать пользователь, т. е. визуальная составляющая определяет интерфейс пользователя. Большинство элементов интерфейса (кнопки, окна, списки и др.) стандартизированы. Поэтому в разных средах разработки (Visual Basic, Visual C++, Delphi и др.) визуальный инструментарий содержит одни и те же элементы интерфейса (элементы управления).
Элементы управления являются объектами. Их свойства и поведение определяются полями и методами соответствующих базовых классов. Классы, порождающие интерфейсные элементы управления, в Delphi называют компонентами. Все визуальные компоненты находятся в библиотеке визуальных компонентов Delphi VCL (Visual Component Library). Кроме визуальных компонентов в этой библиотеке есть невизуальные компоненты, не имеющие образа на экране монитора.
Пользователь – возмутитель спокойствия в мире объектов. Он нажимает на кнопки, выбирает элементы списков, печатает тексты в окнах редактирования. Каждому его действию соответствует некоторое событие. Системная составляющая определяет тип и параметры события и формирует сообщение объекту, с которым связано событие. Иначе говоря, системная составляющая находит нужный объект и запускает соответствующий обработчик события, т. е. соответствующий метод данного объекта. В обработке события программист может предусмотреть самые разные действия: изменение свойств объектов, добавление или удаление интерфейсных объектов и т. д.
Таким образом, чтобы создать приложение, необходимо выполнить две вещи: разработать с помощью визуального инструментария интерфейс пользователя и написать реакции на действия пользователя, т. е. для каждого возможного события написать обрабатывающий его метод. В большинстве приложений нет необходимости программировать системную составляющую. Кроме того, такое программирование часто требует владения функциями Windows API (функции из открытых библиотек Windows).
WINDOWS-ПРИЛОЖЕНИЕ
В данном случае можно выделить следующие основные понятия: окно, системная очередь сообщений, основной циклобработки сообщений, программа-проект.
Основным объектом объектно-ориентированной операционной системы Windows является окно. В дополнение к обычным свойствам объекта оно имеет графический образ на экране дисплея, с которым взаимодействует пользователь. Параметры Windows-окна определяют такие свойства, как тип, размер, положение на экране и т. д. В многозадачной и многооконной операционной системе Windows одновременно можно запустить несколько приложений, с каждым из которых может быть связано несколько окон. В каждом приложении имеется, как минимум, одно окно.
События, возникающие в процессе работы компьютера (инициированные пользователем или связанные с посылкой сообщений от одного приложения к другому, от одного окна к другому того же приложения), приводят к возникновению сообщений, из которых операционная система (Windows) организует системную очередь сообщений. Далее сообщения распределяются по приложениям и создаётся для каждого приложения своя очередь. В этой очереди группируются сообщения от разнообразных источников: мыши, клавиатуры, таймера, других приложений и от самой операционной системы. В этой схеме есть исключения, так как некоторые сообщения напрямую направляются окну, например, сообщение WM_DESTROY, уведомляющее о закрытии данного окна.
Windows накладывает довольно жесткие ограничения на структуру приложений - каждое имеет главную процедуру (в Delphi это программа-проект), одинаково устроенную для всех приложений. Главная процедура начинает работу с регистрации класса окна приложения, затем создает и рисует на экране главное окно и, возможно, другие окна. После создания объектов-окон, связанных с приложением, запускается цикл обработки очереди сообщений приложения, который иногда называют основным циклом обработки сообщений.
СРЕДА ПРОГРАММИРОВАНИЯ
Интегрированная среда разработки приложений в Delphi называется IDE (Integrated Development Environment). Под этим шикарным названием скрывается целая коллекция окон, меню и программ, которые позволяют проектировать интерфейс, связывать код с каждым экранным элементом и полностью отлаживать приложение внутри Delphi.
При входе в IDE стандартно появляются 4 окна: главное окно (рис.2), окно инспектора объектов (Object Inspector), окно форм (Form Designer) и окно редактора кода (Code Editor).
Рис. 2. Главное окно IDE.
Главное окно является управляющим центром IDE. Оно управляет файлами, включаемыми в приложение, и выполняет всю работу с их сопровождением, компиляцией и отладкой. Оно состоит из трех отдельных элементов: панель меню (Menubar), панель инструментов (Speedbar) и палитру компонентов (Component Palette).
Окно инспектора объектов, оформлено в виде двухстраничного блокнота (рис.3). Это окно используется для настройки компонента или формы. Первая страница используется для настройки свойств (Properties), вторая – для настройки событий (Events).
Форма является контейнером интерфейсных элементов. Окно форм, (проектировщик форм, Form Designer) используется в процессе разработки интерфейса (рис. 4). Вместе с инспектором объектов проектировщик форм позволяет добавлять компоненты в форму, модифицировать их, связывать обработчики событий с программным кодом на Object Pascal, используя окно редактора кода.
Рис. 4. Окно проектировщика форм.
По умолчанию для каждого нового проекта создается одно окно, которое называется формой. В дальнейшем к проекту могут быть добавлены другие формы. Но только одна форма может быть активной.
Окно редактора кода (Code Editor, рис.5 справа) позволяет редактировать коды всех модулей (программных единиц), входящих в разрабатываемое приложение. Это окно оформлено в виде многостраничного блокнота. Каждая страница отображает код той или иной программной единицы, входящей в приложение. С помощью проектировщика форм и инспектора объектов представляются все виды частей “фасада” приложения, но без редактора кода нельзя связать эти части в единое целое.
Рис. 5. Окно редактора кода и окно Code Explorer.
По умолчанию слева от редактора кода находится окно Code Explorer (рис. 5). Оно используется для поиска в редакторе кода какого-либо программного элемента: типа, класса, метода и т.д. Это окно можно выделить в самостоятельное и перенести в другое место.
IDE Delphi обладает большой гибкостью в настройке рабочей среды. Для настройки используется диалоговое окно Environment Options, которое выбирается, раскрывая пункты меню Tools - Options.