Программа, создаваемая в среде Delphi в процессе проектирования приложения, основана на модульном принципе. Головная программа получается предельно простой и короткой. Она состоит из объявления списка используемых модулей и нескольких операторов, создающих объекты для необходимых форм и запускающих приложение на выполнение.
Модульность очень важна для создания надежных и относительно легко модифицируемых и сопровождаемых приложений. Четкое соблюдение принципов модульности в сочетании с принципом скрытия информации позволяет модифицировать любые модули, не затрагивая при этом остальных модулей и головную программу.
Все объекты компонентов размещаются в объектах — формах. Для каждой формы, проектируемой в приложении, Delphi создает отдельный модуль. Именно в модулях и осуществляется программирование задачи. В обработчиках событий объектов — форм и компонентов — размещаются описания алгоритмов, которые в основном сводятся к обработке информации, содержащейся в свойствах одних объектов, и задании по результатам этой обработки свойств других объектов.
|
|
9.1. Структура файла головной программы приложения Delphi
В процессе проектирования приложения Delphi автоматически создает код головной программы и отдельных модулей. В модули программист вводит свой код, создавая обработчики различных событий. Но, как правило, не приходится модифицировать головную программу и даже просматривать ее текст. Только в исключительных случаях бывает необходимо что-то изменить в тексте головной программы, сгенерированном Delphi. Головной файл приложения Delphi имеет следующую структуру:
program <имя>;
{Объявления подключаемых модулей, а также объявления локальных для головного файла типов, классов, констант, переменных, описания локальных функций и переменных}
begin
{Операторы тела программы}
end.
В Delphi головной файл обычно не содержит ничего, кроме операторов инициализации приложения, создания форм и запуска приложения. Вся логика программы помещается в файлы модулей.
Типичная головная программа приложения имеет следующий вид:
program Project1;
uses
Forms,
Unitl in 'Unitl.pas' {Forml}, Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
{Здесь вы можете поместить описания констант, переменных, функций, процедур, доступных для использования только в пределах данного файла}
begin
Application.Initialize;
Application.CreateForm(TForml, Forml);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
Программа начинается с ключевого слова program, после которого указывается имя программы. Оно совпадает с именем файла, в котором был сохранен проект. Это же имя присваивается исполняемому файлу приложения. По умолчанию используется имя Project1.
|
|
СОВЕТ Всегда сохраняйте проект под осмысленным именем, изменяя тем самым имя проекта, заданное Delphi по умолчанию. Иначе очень скоро вы запутаетесь в программах Projectl, находящихся в различных каталогах.
После заголовка в тексте программы располагается предложение
uses
Forms,
Unitl in 'Unitl.pas' {Forml}. Unit2 in 'Unit2.pas' {Form2}:
В этом предложении перечисляются модули, загружаемые программой. Первый модуль Forms является системным, а следующие — модулями разработанных программистом форм. Данный пример показывает, что в проекте были созданы две формы с именами Forml и Form2 в модулях с именами Unitl и Unit2. Заключенные в фигурные скобки названия форм — это комментарии.
Предложение в головном файле программы может также содержать после имени модуля ключевое слово in, вслед за которым указывается имя файла, в котором содержится модуль, например:
uses Unitl in 'Unit1.pas'. Unit2 in 'c:\exampes\Unit2.pas':
Ключевое слово in используется в случаях, когда необходимо указать Delphi, где следует искать соответствующие файлы.
ВНИМАНИЕ В предложениях uses, включаемых в модули, использование in не допускается.
Следующая строка текста — {$R *.RES} — представляет собой директиву компилятора, связывающую с исполняемым модулем файлы ресурсов. Она указывает файлы ресурсов (.DFM,.RES), которые должны быть включены в исполняемый модуль или библиотеку. Эти файлы должны быть файлами ресурсов Windows. По умолчанию для файлов ресурсов используется расширение.RES. В процессе компоновки программы или библиотеки файлы, перечисленные в директивах {$R}, копируются в исполняемый модуль.
Первый оператор в теле программы Application.Initialize; инициализирует приложение,
следующие за ним операторы Application.CreateForm(TForm1, Form1); и Application.CreateForm(TForm2, Form2); создают объекты форм Form1 и Form2,
последний оператор, Application.Run; начинает выполнение приложения.
Если требуется добавить какой-то текст в головную программу, то следует ввести описания необходимых констант, переменных, функций и процедур в место программы, отмеченное соответствующим комментарием в приведенном ранее тексте. Кроме того, можно добавить или изменить операторы в теле программы, например, произвести настройки при запуске приложения на выполнение (скажем, настроить формы на русский язык) или сделать запрос пользовательского ввода и в зависимости от ответа создавать или не создавать те или иные формы. Например, если требуется, чтобы вторая форма приложения Form2 создавалась только в случае, если при запуске приложения в командной строке указана опция Y, то следует заменить приведенный ранее оператор
Application.CreateForm(TForm2, Form2); оператором
If (ParamStr(1) = 'Y')
then Application.CreateForm(TForm2, Form2);
Этот оператор анализирует первый параметр командной строки. Если приложение Projectl запущено командой Projectl Y, то будет создана форма Form2. В остальных случаях этой формы не будет.
ПРИМЕЧАНИЕ Можно добавить в головной файл и другие операторы, функции, процедуры. Однако делать это не рекомендуется, поскольку такие действия противоречат принципу модульности. Все необходимые в начале выполнения процедуры и функции настройки следует помещать в отдельный модуль без формы.
Обратите внимание на то, что все определенные в головном файле приложения константы, переменные, процедуры, функции, типы будут доступны только в пределах этого головного файла и недоступны в модулях.