Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_Delphi_1курс лекции / Тема 03 Файлы проекта.doc
Скачиваний:
49
Добавлен:
23.03.2015
Размер:
70.14 Кб
Скачать

Головной файл программы

Главной частью вашего приложения является файл проекта (.dpr), содержащий код на языке Object Pascal, с которого начинается выполнение вашей программы и который обеспечивает инициализацию других модулей. В большинстве случаев вы можете создать законченное приложение Delphi, так и не взглянув на этот файл. Он создается и модифицируется Delphi автоматически в процессе вашей разработки приложения. Чтобы просмотреть файл проекта выбирете Project | View Source главного меню (В предыдущих версиях Delphi для просмотра кода проекта используйте опцию View | project Source).

Головной файл программы имеет следующую структуру:

Program <имя>;

<0бъявления подключаемых модулей, а также объявления локальных для головного файла

типов, классов, констант, переменных, описание локальных функций и переменных >

begin

<операторы тела программы >

end.

В Delphi головной файл обычно не содержит ничего, кроме операторов инициализации приложения, создания форм и запуска приложения.

Типичный головной файл в Delphi имеет вид:

program Projectl;

uses

Forms,

Unitl in 'Unit1.pas' {Form1};

Unit2 in 'Unit2.pas' {Form2};,

{$R *.RES}

{Здесь можно поместить описания каких-то констант, переменных,

функций, процедур. Все это будет доступно только в пределах

данного файла.}

begin

Application.Initialize;

Application.CreateForm(TForml, Forml);

Application.CreateForm(TForm2, Form2) ;

Application.Run;

end.

Имя программы совпадает с именем файла, в котором сохранен проект. Это же

имя присваивается выполняемому файлу приложения.

После заголовка в тексте программы располагается предложение uses. В этом предложении перечисляются модули, загружаемые программой — системные и модули приложения (в частности, модули всех форм). В приведенном примере подразумевается, что в проекте созданы две формы с именами Forml и Form2 в модулях с именами Unitl иUnlt2. Названия форм включаются в текст в виде комментариев.

Следующая строка текста — {$R *.RES} представляет собой директиву компилятора (в нашем случае - указание компилятору на необходимость подключения к программе так называемого файла ресурсов). Затем после ключевого слова begin и до последнего завершающего программу оператора end с точкой (end.) записано тело программы.

Первый выполняемый оператор в теле программы инициализирует приложение, два следующих — создают объекты форм Forml и Form2, последний — начинает выполнение приложения.

Если вам надо ввести какой-то свой текст в головную программу, вы можете сделать это, введя описания необходимых констант, переменных, функций и процедур в место программы, отмеченное соответствующим комментарием в приведенном выше тексте. Кроме того, вы можете добавить или изменить операторы в теле программы. Вам может потребоваться при запуске приложения на выполнение провести какие-то настройки (например, настроить формы на тот или иной язык — русский или английский). Или сделать какой-то запрос пользователю и в зависимости от ответа создавать или не создавать те или иные формы. В этом случае вы можете ввести в код соответствующие процедуры, обратиться к ним после выполнения инициализации приложения, но до создания объектов форм, а затем, например, создавать или не создавать отдельные формы исходя из результатов работы ваших процедур.

Пусть, например, вы хотите, чтобы вторая форма вашего приложения Form2 создавалась только в случае утвердительного ответа на запрос (конечно, тексты в нем носят чисто демонстрационный характер). В этом случае вы можете заменить приведенный выше оператор

Application.CreateForm(TForm2,Form2) ;

на оператор

if Application.MessageBox('Хотите иметь вторую форму?',

'Подтвердите создание формы', MB_YESNOCAHCEL+MB_ICONQUESTION] =IDYES

then Application.CreateForm(TForm2, Form2);

Этот код использует метод MessageBox объектаApplication. В результате пользователю будет предъявлено диалоговое окно. В зависимости от ответа пользователя, формаForm2 будет, или не будет создаваться. Только не забудьте, что если вы используете методMessageBox, добавить в операторuses ссылку на модульWindows:

uses

Forms, Windows, ...

В противном случае компилятор не поймет констант, которые вы используете при вызове MessageBox.

Все описанное выше можно делать, но это будет плохой стиль программирования, поскольку он противоречит принципу модульности. Все необходимые вам в начале выполнения процедуры и функции настройки помещайте в отдельный модуль без формы. Такой модуль, не связанный с какой-то формой, можно включить в приложение, выполнив команду File New и щелкнув на пиктограмме Unil. В частности, в этот модуль можно перенести из головного файла все выполняемые модули, так что головной файл будет вообще практически пустым. Пусть, например, вы включили в проект модуль с именем Unit3, в котором записали приведенные выше операторы создания форм. Тогда головной модуль может иметь вид:

program Project2;

uses

Unit3 in 'Unit3.pas';

{$R *.RES)

begin

end.

А модуль Unit3 может выглядеть так:

interface

implementation

uses

Forms, Windows, unitl,unit2;

Initialization

Application.Initialize;

Application.CreateForm(TForml, Forml);

if Application.MessageBox('Хотите иметь вторую форму?',

'Подтвердите создание формы',

MB__YESNOCANCEL+MB_ICQNQUE5TION) = IDYES

then Application.CreateForm(TForm2, Form2);

Forml.SetFocus;

Application.Run;

end.