Лекция №6: Структура проекта Delphi
Между содержимым окна формы и окна редактора кода существует неразрывная связь, которая строго контролируется системой Delphi.
Пример: добавление в форму нового компонента приводит к авто изменению кода программы. Автоматически создаются также заголовки для обработчиков событий, программист при этом может пополнять заголовки конкретным содержанием:
Вставлять операторы
Добавлять описание собственных переменных типов, констант и др.
При этом нельзя удалять из текста программы те строки, которые вставила среда Delphi.
Программа Delphi представляет собой несколько связанных между собой файлов. Обязателен файл проекта с расширением “.dpr” и одного или несколько модулей с расширением “.pas” .
Файл проекта не предназначен для редактирования пользователем и создается автоматически самой системой программирования. Для того, чтобы увидеть его содержание необходимо выполнить следующие команды
Пример содержимого файла проекта:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
За Program идет имя проекта. Оно задается программистом в момент сохранения. Пользователь и определяет имя создаваемого средой Delphi исполняемого файла с расширением “.exe”. За словом USES следуют имена используемых модулей. В нашем случае стандартного модуля Forms и модуля формы Unit1. директива компилятору указывает, что нужно использовать файл ресурсов, который содержит описание ресурсов (возможностей) приложения.
Пример: пиктограммы.
“*” - указывает на то, что имя файла ресурса такое же, как и файла проекта, но с расширением “.res”. используемая часть главного модуля находится между операторными скобками (begin ….. end). Операторы исполняемой части обеспечивают инициализация приложения о вывод на экран стартового окна. Кроме главного модуля каждая программа включается, как минимум один модуль формы, который содержит описание стартовой формы приложения и, поддерживающих ее работ процедур.
В Delphi каждой форме соответствует свой модуль. Для переключения между формой и окном редактора кода, содержащего соответствующий модуль, следует выполнить команды: toggle (от англ. Top - наряжать). Можно воспользоваться кнопкой F12. Модули – это программные единицы, служащие для размещения фрагментов программ. С помощью модулей реализуется решаемая пользователем задача.
Структура модуля
Модули имеют стандартную конструкцию (последовательность и перечень объектов) предусмотренную в Object Pascal. Приведем пример структуры модуля в общем виде.
Пример:
Unit <имя модуля>;
Interface – взаимосвязь;
…….
Implementation – инструменты;
…….
Initialization – исходные установки;
…….
Finalization – завершение программы;
…….
End.
В качестве примера рассмотрим содержимое модуля в том виде, в котором он находится непосредственно после загрузки среды Delphi.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
end.
Начинается модуль словом unit, за которым следует его имя. Именно это имя упоминается в списке используемых модулей в операторе USES главного модуля приложения. Модуль может состоять из четырех разделов:
Интерфейс
Реализация
Инициализация
Завершающая часть
Раздел интерфейса сообщает компилятору, какие данные, располагающиеся в модуле, являются доступными для других модулей программы. После слова USES перечисляются стандартные модули, а также сформированная Delphi описания типа формы, которая идет после слова type.
Раздел реализации начинается словом implementation и содержит объявлении локальных переменных, процедур и функций, поддерживающих работу формы.
Директива компилятора указывает, что необходимо использовать файл с расширением “.dfm” , содержащий внешний вид формы.
Инициализирующая и завершающая части являются необязательными.
В отличии от файла проекта модуль может редактироваться программистом. При создании пользователем новой формы, автоматически будет создаваться новый модуль. Таким образом, файл с расширением “.pas”, содержащий программный код модуля, сформированного в окне редактора кода с совместными усилиями программиста и среды Delphi.
В файле с расширением “.dfm” хранится описание содержимого окна формы, а в файле с расширением “.dcu” находятся коды ( инструкции ) – компоновщик, входящий в интегрированную среду Delphi преобразует “.dcu” файлы в единый загрузочный “.exe” файл. Этот файл позволяет запускать программу, как автономное независимое приложение.
Пример. Составить программу для вычисления площади круга произвольного радиуса:
Необходимо создать новую папку, для размещения всех файлов, входящих в проект (создать папку можно в момент сохранения файлов, используя кнопку создания новой папки)
Для создания нового проекта используется если пользователь работал с другой средой

Выбор компонентов из страницы Standard палитры компонентов поместим на форму 1 четыре компонента (две метки - Label1,2; две кнопки – button1, edit1).
Метка1,2 предназначены для отображения текстовой информации, label1 – «введите радиус круга», label2 – «ввод площади круга», edit1 – строка ввода – компонент, при помощи которого мы будем вводить значения радиуса в виде символьной строки.
Размер компонентов можно задавать сразу же при размещении их на форме. Верхний угол задается щелчком мыши, правый нижний – конец. Отображаемый текст меток можно ввести, как на этапе конструирования, так и на этапе выполнения программы. Button1 – кнопка, которая при нажатии будет формировать события, а именно вычисление площади круга.
Определение свойств компонентов.
Свойства меток. Метки определяются следующими свойствами: Height, Width, Left, Top.
Свойства Left и Top – указывают расстояние от левого угла формы, на которой располагается компонент до левого верхнего угла самого компонента. Выравнивание окна формы можно производить при помощи опции Align (alignment – англ. выравнивание).
Допускается возможность выравнивания группы компонентов (центрирование).
Следующие свойства autosize = true означает, что размер метки определяется вводимой строкой, при этом возможно два варианта: разрешение переноса слов - wordwrap, кроме этого имеет свойство caption – значение.
Замечание: как только для label2 задается свойство autosize = true, размеры компонента будут определяться размерами введенной строки.
Свойство caption является основным для метки label1, label2.
Кроме этих свойств можно установить вид и размер шрифтов font.
формирование вида будущей программы. С помощью инспектора объектов необходимо установить свойства формы и компонентов. Для фор мы выбор объектов можно приводить только в активном состоянии. Размер формы определяет окно будущей программы. Свойства формы caption определяет название программы. Вместо «Form1» мы выберем «вычисление площади круга». Это свойство является строковым, типа string и поэтому по синтаксису паскаля записывается в кавычках ‘вычисление площади круга’. Размер формы определяется обычными приемами определения размеров прямоугольника. При этом можно задавать высоту и длину формы в пикселях непосредственно в инспекторе объектов.
Создание поля программы.
Выполнение программы непосредственно связано со свойством таких компонентов, как кнопки. Для edit1 и button1 свойства Height, Width, Left, Top имеют тот же смысл, что и для компонентов label.
Особое свойство кнопок – это свойство Text, предназначено для ввода символьных строк. В Button1 это свойство равно набору пробелов. Необходимо задавать имена всех используемых компонентов в свойстве Name. Имена генерируются средой Delphi автоматически. Программист может их изменить. Поскольку создаваемая программа должна производить вычисления площади после введения радиуса и нажатия кнопки счет или пуск необходимо создать обработчик для кнопки button1.
Перед первым запуском программы ее необходимо сохранить.
Таким образом код программы созданного приложения имеет вид:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var s,r:real;
begin
r:=strtofloat(edit1.text);
s:=pi*sqr(r);
* label2.caption:='ieiuaau e?oaa'+floattostrf(s,ffgeneral,7,2);
end;
end.
Пояснение к выделенной строке(*):
* служит для того, чтобы присвоить свойству какое-либо значение (в нашем случае caption) или извлечь значение из свойства следует указать компонент (указать компонент, потом ‘.’, потом свойство и задать его). В папке файла-проекта после команды сохранения будут следующие файлы:
Unit1.pas – файл модуля хранит код
Unit1.dfm – содержит форму
Unit1.dcu – откомпилированный файл модуля
Unit1.~dfm –копия формы
Unit1.~pas – копия кода
Имя.res – файл, содержащий используемый проект, пиктограммы, другие ресурсы. |