Полезная статья? Пожалуйста, поставьте "+"
К содержанию Приложение собирается из многих
элементов: форм, программных модулей, внешних библиотек, картинок,
пиктограмм и др. Каждый элемент размещается в отдельном файле и имеет
строго определенное назначение. Набор всех файлов, необходимых для
создания приложения, называется проектом. Компилятор
последовательно обрабатывает файлы проекта и строит из них выполняемый
файл. Основные файлы проекта можно разделить на несколько типов:
- Файлы описания форм — текстовые файлы с расширением DFM, описывающие
формы с компонентами. В этих файлах запоминаются начальные значения
свойств, установленные вами в окне свойств.
- Файлы программных модулей — текстовые файлы с расширением PAS,
содержащие исходные программные коды на языке Delphi. В этих файлах вы
пишите методы обработки событий, генерируемых формами и компонентами.
- Главный файл проекта — текстовый файл с расширением DPR, содержащий
главный программный блок. Файл проекта подключает все используемые
программные модули и содержит операторы для запуска приложения. Этот
файл среда Delphi создает и контролирует сама.
Файлы описания форм Помните,
с чего вы начинали знакомство со средой Delphi? Конечно, с формы. Итак,
первая составная часть проекта — это текстовый файл с расширением DFM,
описывающий форму. В DFM-файле сохраняются значения свойств формы и ее
компонентов, установленные вами в окне свойств во время проектирования
приложения. Количество DFM-файлов равно количеству используемых в
приложении форм.
Файл описания формы (DFM-файл) нужен
только на этапе проектирования. При сборке приложения описание формы из
DFM-файла помещается в специальную область данных выполняемого файла
(область ресурсов). Когда во время работы приложения происходит создание
формы, ее описание извлекается из области ресурсов и используется для
инициализации формы и ее компонентов. В результате форма отображается на
экране так, как вы задали при проектировании.
Файлы программных модулей Каждой
форме в проекте соответствует свой программный модуль (unit),
содержащий все относящиеся к форме объявления и методы обработки
событий, написанные на языке Delphi. Программные модули размещаются в
отдельных файлах с расширением PAS. Их количество может превышать
количество форм. Почему? Потому, что в ряде случаев программные модули
могут и не относиться к формам, а содержать вспомогательные процедуры,
функции, классы и проч
Содержание интерфейсной секции модуля
(interface) начинается с подключения стандартных модулей библиотеки VCL,
в которых определены часто вызываемые подпрограммы и классы помещенных
на форму компонентов.
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
Среда
Delphi формирует список модулей без вашего участия и автоматически
пополняет его, когда вы добавляете на форму новые компоненты. Тем не
менее, список подключенных модулей можно изменять прямо в редакторе кода
(вручную).
В разделе описания типов (type) объявлен класс формы. По умолчанию он называется TForm1 и порожден от стандартного класса TForm.
После описания класса идет объявление собственно объекта формы:
var Form1: TForm1;
Переменная Form1 — это ссылка на объект класса TForm1, конструирование которого выполняется в главном файле проекта – DPR-файле.
На
этом содержание интерфейсной секции модуля заканчивается и начинается
раздел реализации (implementation). Сначала в нем подключается файл
описания формы:
{$R *.dfm}
Подключается
DFM-файл, в котором описана форма данного модуля. Имя DFM-файла
получается заменой звездочки на имя модуля, в котором записана
директива.
Далее следует реализация методов
обработки событий. Пустые заготовки для них среда Delphi создает сама
одновременно с добавлением заголовков в класс формы.
Главный файл проекта Для
того чтобы компилятор знал, какие конкретно файлы входят в проект,
необходимо какое-то организующее начало. И оно действительно есть. Это
так называемый файл проекта, имеющий расширение DPR (сокр. от Delphi
Project). Он представляет собой главный программный файл на языке
Delphi, который подключает с помощью оператора uses все файлы модулей,
входящих в проект. Для каждого проекта существует только один DPR-файл.
Когда
начинается разработка нового приложения, среда Delphi автоматически
создает файл проекта. По мере создания новых форм содержимое этого файла
видоизменяется автоматически.
uses Forms, Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.
Подключение
модуля Forms обязательно для всех программ, так как в нем содержится
определение объекта Application. Этот объект лежит в основе любого
графического приложения и доступен на протяжении всей его работы.
Подключаемый
следом модуль Unit1 содержит определение формы. Название формы
приводится в фигурных скобках. Директива in указывает на то, что модуль
является необходимой частью проекта и существует в виде исходного текста
на языке Delphi.
Директива {$R *.res} подключает к
результирующему выполняемому файлу так называемые ресурсы, в данном
случае значок приложения. Этот значок будет виден на Панели Задач.
Дальше
следует главный программный блок, содержащий вызовы трех методов
объекта Application. Вызов метода Initialize подготавливает приложение к
работе, метод CreateForm загружает и инициализирует форму Form1, а
метод Run активизирует форму и начинает выполнение приложения.
Фактически время работы метода Run — это время работы приложения. Выход
из метода Run происходит тогда, когда пользователь закрывает главную
форму приложения; в результате приложение завершается.
Другие файлы проекта Существует ряд дополнительных файлов:
- Файл с расширением DOF (сокр. от Delphi Options File), где хранятся
заданные программистом параметры компиляции и сборки проекта;
- Файл с расширением DSK (сокр. от англ. Desktop), где хранятся
настройки среды Delphi для данного проекта. Чтобы среда Delphi сохраняла
свои настройки в DSK-файле, выберите в меню команду Tools | Environment
Options... и в диалоговом окне Environment Options на вкладке
Preferences в группе Autosave options отметьте пункт Project Desktop.
- Файл с расширением CFG (сокр. от англ. Configuration), где хранятся настройки для консольного варианта компилятора.
- Файл с расширением DCI (сокр. от англ. Delphi CodeInsight), где
среда Delphi хранит сделанные вами настройки для программного "суфлера"
(CodeInsight).
- Файл с расширением DCT (сокр. от англ. Delphi Component Templates), где хранятся ваши домашние заготовки компонентов.
- Файл с расширением DMT (сокр. от англ. Delphi Menu Templates), где хранятся ваши домашние заготовки меню.
- Файл с расширением DRO, где хранятся настройки и ваши добавки к хранилищу компонентов.
- Файл с расширением TODO — записная книжка для хранения заданий на программирование и коротких примечаний.
- Файл с расширением DDP (сокр. от англ. Delphi Diagram Portfolio),
где хранятся графические схемы, наглядно поясняющие взаимосвязи между
компонентами.
- Файл ресурсов с расширением RES (сокр. от RESource). В нем,
например, хранится значок приложения, который отображается на Панели
Задач..
В проект могут входить также логически
автономные элементы: точечные рисунки (BMP-файлы), значки (ICO-файлы),
файлы справки (HLP-файлы) и т.п., однако ими управляет сам программист.
Понятие компонента Понятие
компонента является фундаментальным для среды Delphi. Без компонентов
все преимущества визуальной разработки приложений исчезают и говорить
становится не о чем.
Существует два взгляда на компоненты. Взгляд
снаружи, точнее из среды визуальной разработки приложений. С этой точки
зрения компоненты — это самодостаточные строительные блоки, которые вы
берете из палитры компонентов и переносите на форму для создания
собственно приложения. Примеры компонентов вам известны: это кнопки,
списки, надписи и др. Существует еще и взгляд изнутри, т.е. взгляд из программы на языке Delphi. С этой точки зрения компоненты — это классы, порожденные прямо или косвенно от класса TComponent
и имеющие published-свойства. Экземпляры компонентов — это объекты этих
классов, существующие в качестве полей формы. Среди опубликованных
свойств компонентов обязательно присутствует имя (Name), под которым
экземпляр компонента представляется в окне свойств.
Объединение
этих двух точек зрения дает цельное представление о том, что такое
компоненты. При работе с компонентами из среды визуальной разработки
приложений вы всегда видите их лицевую сторону. Однако как только вы
начинаете писать обработчики событий, и управлять компонентами
программно, вы соприкасаетесь с программной стороной компонентов, суть
которой — объекты. Таким образом, среда Delphi обеспечивает симбиоз
визуального и объектно-ориентированного программирования.
При анализе структуры компонента обнаруживается, что его природа троична и лучше всего описывается формулой:
Компонент = состояние (свойства) + поведение (методы) + обратная реакция (события).
- Состояние компонента определяется его свойствами.
Свойства бывают изменяемые (для чтения и записи) и неизменяемые (только
для чтения). Помимо этого, свойства могут получать значения либо на
этапе проектирования (design-time), либо только во время выполнения
программы (run-time). Первые устанавливаются для каждого компонента в
окне свойств и определяют начальное состояние компонента. Во время
выполнения приложения эти свойства могут быть изменены программно,
соответственно изменится внешний вид и поведение компонента. Вторая
группа — это свойства, которые не видны в окне свойств, и управлять
которыми можно только программно. С точки зрения языка Delphi различие
между этими группами свойств состоит в том, что первые объявлены в
секции published, а вторые — в секции public.
- Поведение компонента описывается с помощью его
процедур и функций (методов). Вызовы методов компонента помещаются в
исходный код программы и происходят только во время выполнения
приложения. Методы не имеют под собой визуальной основы.
- Обратная реакция компонента — это его события.
События позволяют, например, связать нажатие кнопки с вызовом метода
формы. События реализуются с помощью свойств, содержащих указатели на
методы.
Все компоненты делятся на две группы: визуальные и невизуальные компоненты (рисунок 7.38).
- Визуальные компоненты (visual components) — это
видимые элементы пользовательского интерфейса: кнопки, метки, блоки
списков и др. Они выглядят одинаково и на стадии проектирования, и во
время работы приложения.
- Невизуальные компоненты (non-visual components) —
это, так сказать, бойцы невидимого фронта; они работают, но сами на
экране не видны. К невизуальным компонентам относятся таймер, компоненты
доступа к базам данным и др. В процессе проектирования такие компоненты
представляются на форме небольшим значком. Их свойства устанавливаются в
уже известном вам окне свойств. Некоторые компоненты хоть и являются
невизуальными, могут что-нибудь отображать на экране. Например,
невизуальный компонент MainMenu отображает на форме полосу главного
меню, а компонент OpenDialog — стандартное диалоговое окно выбора файла.
Визуальные компоненты подразделяются на
компоненты, рисуемые оконной системой Windows, и компоненты, рисуемые
графической библиотекой VCL. На программистском жаргоне первые называют
«оконными» компонентами, а вторые — «графическими» компонентами.
- «Оконные» компоненты (windowed controls) являются
специализированными окнами внутри окна формы. Их самое главное качество —
способность получать фокус ввода. К числу оконных компонентов
относятся, например, компоненты Button, RadioButton, CheckBox, GroupBox,
и т.д. Некоторые оконные компоненты (GroupBox, TabControl, PageControl)
способны содержать другие визуальные компоненты и называются
контейнерами (container controls). Отображение оконных компонентов
обеспечивается операционной системой Windows. Для профессионалов,
имевших дело Windows API, заметим, что оконные компоненты имеют свойство
Handle. Оно связывает компонент среды Delphi с соответствующим объектом
операционной системы.
- «Графические» компоненты (graphical controls) не являются окнами,
поэтому не могут получать фокус ввода и содержать другие визуальные
компоненты. Графические компоненты не основаны на объектах операционной
системы Windows, их отображение полностью выполняет библиотека VCL. К
числу графических компонентов относятся, например, компоненты
SpeedButton, Image, Bevel и т.д.
|