В себя различные компоненты раздела описаний (типы, константы, переменные, процедуры и функции) и, возможно, некоторые исполняемые операторы инициирующей части

Вид материалаДокументы

Содержание


Программирование в среде Delphi
2.2 Создание простейшего оконного приложения
Project выбрать команду Options
Далее и в открывшемся диалоговом окне Выбор папки
Далее открывает диалоговое окно Выбор названия программы
2.3 Текстовый редактор Memo.
Удалить строки
2.4 Использование компонента ListBox
2.5 Использование панели переключателей Radio Group
2.6 Использование компонента StringGrid
2.7 Создание меню.
Подобный материал:
  1   2   3




1.10 Модули

Модуль – это автономно компилируемая программная единица, включающая в себя различные компоненты раздела описаний (типы, константы, переменные, процедуры и функции) и, возможно, некоторые исполняемые операторы инициирующей части. Тела процедур и функций располагаются в исполняемой части модуля, которая может быть скрыта от пользователя.

Роль модулей в Delphi не исчерпывается только механизмом раздельной компиляции. Delphi связывает с каждым включаемым в программу окном собственный модуль и таким способом локализует все свойства окна в отдельной программной единице. Как мы увидим далее, основная программа оконного приложения (файл проекта DPR) содержит перечень всех используемых в приложении модулей и несколько исполняемых операторов, обеспечивающих создание нужных окон и связь приложения с Windows. Вся основная работа приложения управляется кодом, содержащимся в модулях.

Модуль имеет следующую структуру

unit <имя>;

interface

<интерфейсная часть>

implementation

<исполняемая часть>

initialization

<инициирующая часть>

finalization

<завершающая часть>

end.

Таким образом, модуль состоит из заголовка и четырёх составных частей, любая из которых может быть пустой.

Для правильной работы среды Delphi имя модуля должно совпадать с именем дискового файла, в который помещается исходный текст модуля. Если, например, имеем заголовок модуля unit vector, то исходный текст соответствующего модуля должен размещаться в дисковом файле vector.pas.

Связь модуля с другими модулями и основной программой устанавливается специальным предложением

uses <список модулей>;

Например,

uses SysUtils, vector;

Объявление uses должно открывать раздел описаний основной программы.

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

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

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

Пример 56. Дано два целочисленных вектора размера n. Найти их скалярное произведение. Для решения задачи создать и использовать модуль, содержащий следующие подпрограммы: процедуру заполнения одномерного массива с клавиатуры, функцию для нахождения скалярного произведения двух векторов.


unit vector;

interface

const n=5;

type lin=array[1..n] of integer;

procedure init(var x:lin);

function scal(x,y:lin):integer;

implementation

procedure init;

var i:integer;

begin

for i:=1 to n do read(x[i]);

end;

function scal;

var i:integer;

begin

result:=0;

for i:=1 to n do result:=result + x[i]*y[i];

end;

end.

Чтобы создать такой модуль, следует выбрать команду File„New„Unit. Текст модуля следует сохранить в файле vector.pas. Приведём текст основной программы (консольного приложения), использующей модуль vector.

program p56;

{$APPTYPE CONSOLE}

uses

SysUtils, vector;

var a,b:lin; rez:integer;

begin

init(a); init(b); rez:=scal(a,b);

writeln(rez:6);

readln; readln

end.


Задачи.

155. Дано три целочисленных вектора a, b, c размера n (n=5). Верно ли, что вектор a + b ортогонален вектору b + c ? Для решения задачи добавить в модуль vector функцию для нахождения суммы двух векторов.

156. Дано три целочисленных вектора a, b, c размера n (n=5). Вычислить величину (a,a)–(b,c), где a – тот из векторов, в котором самый большой минимальный элемент (считать, что такой элемент единственный). Для решения задачи добавить в модуль vector функцию для нахождения минимального элемента одномерного массива.

157. Дано три целочисленных вектора a, b, c размера n (n=5). Вывести на печать вектор с наибольшим скалярным квадратом. Для решения задачи добавить в модуль vector процедуру распечатки элементов одномерного массива.

158*. Дано n целочисленных векторов размера n (n=5). Найти скалярное произведение вектора с минимальной суммой элементов и вектора с максимальной суммой элементов. Добавить в модуль vector необходимые для решения задачи подпрограммы.

159*. Дано n целочисленных векторов размера n (n=5). Определить, является ли данная последовательность векторов ортонормированной, т.е. такой, в которой скалярное произведение каждой пары различных векторов равно нулю, а скалярный квадрат каждого из векторов равен 1. Для решения задачи использовать модуль vector.


Программирование в среде Delphi


Часть II

Создание оконных приложений


2.1 Классы и объекты

Объектно-ориентированное программирование (ООП) – это методика разработки программ, в основе которой лежит понятие объекта, как некоторой структуры, описывающей объект реального мира, его поведение. Задача, решаемая с использованием методики ООП, описывается в терминах объектов и операций над ними, а программа при таком подходе представляет собой набор объектов и связей между ними.

Строго говоря, для разработки оконного приложения в Delphi на базе компонентов, предоставляемых средой разработки, знание концепции ООП не является необходимым. Однако материал данной главы будет весьма полезен для более глубокого понимания того, как программа взаимодействует с компонентами, что и почему Delphi добавляет в текст программы.

Язык Object Pascal, поддерживая концепцию объектно-ориентированного программирования, даёт возможность определять классы. Описание типа class напоминает описание типа record (запись), но тип class кроме описания полей данных содержит ещё методы (процедуры и функции).

Объект в Object Pascal – это конкретный экземпляр класса. Переменная-объект понимается как динамическая структура, то есть содержит не данные, а ссылку на данные объекта. Выделение памяти под эти данные осуществляется при помощи специального метода – конструктора (constructor).

Пример объявления простого класса:

type tPerson = class

fname : string[15];

faddress : string[45];

fage : byte;

procedure show;

end;

var boy1 : tPerson;

В основе объектно-ориентированного программирования лежат три основных принципа: инкапсуляция, наследование и полиморфизм.

Инкапсуляцией называется объединение в классе данных и подпрограмм для их обработки. Данные содержатся в полях класса, а процедуры и функции называются методами. В соответствии с правилами объектно-ориентированного программирования прямой доступ к полям нежелателен. В связи с этим в Object Pascal предусмотрены специальные конструкции, называемые свойствами, которые осуществляют чтение или запись в поля при помощи вызова соответствующих методов. Общепринятым является правило давать названия классам, начинающиеся с буквы t. Например:

type tPerson = class;

Наследование означает, что класс может наследовать компоненты другого класса. Создать новый класс от некоторого класса-родителя можно следующим образом:

type tStudent = class(tPerson);

Принцип наследования заключается в том, что порождённый класс-потомок автоматически наследует поля, методы и свойства своего родителя, и в тоже время может дополнять их новыми.

В Object Pascal все классы являются потомками класса tObject. Этот класс не включает в себя полей и свойств, зато его методы позволяют создавать, поддерживать работу и удалять объекты. Если программист хочет создать класс, являющийся непосредственным потомком класса tObject, то имя класса-родителя в этом случае можно не указывать, т.е. следующие строки являются эквивалентными:

type tNewClass = class(tObject);

type tNewClass = class;

Использование принципа наследования в Delphi привело к созданию разветвлённого дерева классов. В верхней части этого дерева находятся так называемые абстрактные классы, для которых нельзя создать полноценные работающие объекты. Но вместе с тем абстрактные классы являются родоначальниками больших групп классов, для которых уже создаются реальные объекты.

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

В общем виде класс объявляется в разделе type следующим образом:

type < имя класса > = class(< имя класса-родителя >)

public

< описание общедоступных элементов >

published

< описание элементов, доступных в Инспекторе Объектов >

protected

< описание элементов, доступных в классах-потомках >

private

< описание элементов, доступных только в модуле >

end;

Секции public, published, protected, private могут содержать описания полей, методов, свойств, событий.

Следующий пример иллюстрирует создание объекта типа tPerson, обращение к его полям и методам.

type tPerson = class

private

fname : string[15];

faddress : string[45];

fage : byte;

public

procedure show;

end;

var boy1 : tPerson;

procedure tPerson.show;

begin

writeln('Surname?'); writeln(fname);

writeln('Address?'); writeln(faddress);

writeln('Age?'); writeln(fage);

end;

begin

boy1:=tPerson.Create; boy1.fname:='Ivanov';

boy1.faddress:='Kolzovskaja, 59-45';

boy1.fage:=16; boy1.show;

readln;

end.

После описания типа класса tPerson следует описание реализации методов. В заголовке имя метода дополняется именем класса, к которому данный метод относится (procedure tPerson.show;). В теле метода обращение к полям класса происходит без указания имени класса. Создание объекта boy1 происходит в результате применения конструктора Create к имени класса. Для того чтобы обратиться к полю объекта, нужно написать имя объекта и имя поля, разделённые точкой (boy1.fage). Аналогично записывается вызов метода объекта (boy1.show).

Классы, созданные разработчиками Delphi, образуют сложную иерархическую структуру, называемую Библиотекой визуальных компонентов (Visual Component Library –VCL). Количество входящих в VCL классов составляет несколько сотен. На следующем рисунке изображены базовые классы, являющиеся родоначальниками всех остальных классов.


TObject



TObject

TObject

TPersistent



TObject

TComponent



TObject

TControl






TGraphicControl

TWinControl

Во время проектирования формы приложения Delphi автоматически добавляет в текст программы необходимые объекты. Если сразу после запуска Delphi просмотреть содержимое окна редактора кода, то там можно обнаружить следующее описание класса исходной, пустой формы приложения и объявление объекта – формы приложения:


type

TForm1 = class(TForm)

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

Когда программист, добавляя необходимые компоненты, создаёт нужную форму, Delphi формирует описание класса формы. Когда программист создаёт процедуру обработки события формы или её компонента, Delphi добавляет объявление метода в описание класса формы приложения.


2.2 Создание простейшего оконного приложения


Начало работы в Delphi

После запуска Delphi на экране появляются четыре окна: главное окно, окно формы, окно инспектора объектов и окно редактора кода, которое почти полностью закрыто окном формы.

В главном окне находится меню команд Delphi, панель инструментов и палитра компонентов.

Окно формы ( его заголовок Form1) представляет собой заготовку, макет одного из окон разрабатываемого приложения.

Окно инспектора объектов ( его заголовок Object Inspector) позволяет видеть и менять свойства объектов проекта. После запуска Delphi в этом окне находятся свойства формы Form1.

Окно редактора кода содержит макет процедуры обработки события. Кодом в Delphi называется текст программы.


Форма приложения

Работа над новым проектом (так в Delphi называется разрабатываемое приложение) начинается с создания стартовой формы – окна, которое появляется при запуске приложения.

Начнём с создания проекта для пересчёта длины отрезка из дюймов в сантиметры. Стартовая форма создаётся путём изменения свойств формы Form1, которые определяют её внешний вид: размер, положение на экране, текст заголовка, оформление. Свойства перечислены на вкладке Properties окна Object Inspector. В левой колонке находятся имена свойств, в правой – их значения.

В таблице приведены изменённые свойства формы разрабатываемого приложения. Остальные свойства оставлены без изменения.


Свойство

Обозначение

Значение

Имя формы

Name

Form1

Заголовок

Caption

Дюйм

Высота

Height

185

Ширина

Width

290

Шрифт

Font.Name

Arial

Размер шрифта

Font.Size

12


После установки этих значений свойств форма должна выглядеть следующим образом:






Компоненты формы

Программа пересчёта длины отрезка из дюймов в сантиметры должна получить от пользователя исходные данные – значение длины в дюймах. Добавим в форму компонент – поле редактирования для ввода данных.

В
ab
программе форма и её компоненты рассматриваются как объекты. Поэтому окно, в котором находятся свойства формы и её компонентов, называется Object Inspector. Чтобы добавить к форме компонент, надо в палитре компонентов, щелкнуть мышью на пиктограмме нужного компонента (для поля редактирования это значок ), а затем щелкнуть в той точке формы, где должен находиться левый верхний угол компонента. В результате в форме появится выбранный компонент стандартного размера.

Компонент формы, окружённый восемью маленькими квадратиками, называется выделенным (маркированным). Свойства маркированного компонента отображаются в Object Inspector. Delphi позволяет легко изменить положение и размер компонента обычным для Windows способом. Если свойства компонента изменяются с помощью Object Inspector, то компонент должен быть в это время маркирован. В таблице приведены изменённые свойства поля редактирования, предназначенного для ввода длины отрезка в дюймах.

Свойство

Обозначение

Значение

Имя поля. Используется для доступа к содержимому поля.

Name

Edit1

Текст, находящийся в поле ввода.

Text




Расстояние от левой границы поля до левой границы формы.

Left

24

Расстояние от верхней границы поля до верхней границы формы.

Top

48

Ширина поля.

Width

100

После установления указанных значений свойств компонента Edit1 форма приложения примет вид:





Для вывода текстовых сообщений в форме используются метки. Текст метки может быть задан как на этапе конструирования формы, так и на этапе выполнения программы. К форме разрабатываемого приложения надо добавить две метки. Первая метка будет представлять собой информационное сообщение. Вторая метка предназначена для вывода результата пересчёта из дюймов в сантиметры.

П
A
иктограмма метки . После того, как метка добавлена, можно изменить её свойства.

В таблице приведены изменённые свойства меток Label1 и Label2:

Name

Label1

Label2

Caption

Введите длину в дюймах и щёлкните на Пересчёт




AutoSize

False

False

Top

8

96

Left

24

24

Height

33

49

Width

209

130

WordWrap

True

True

ParentFont

True

True

П
осле добавления меток и установки их свойств форма разрабатываемого приложения приобретёт вид:

Свойство ParentFont обеих меток имеет значение true, поэтому свойство Font (шрифт) меток наследует значение свойства Font “родителя”, в данном случае основной формы.

Если свойство AutoSize (автоматический подгон размера) имеет значение true, то Delphi автоматически устанавливает размеры метки в зависимости от количества символов текста метки и используемого шрифта. В противном случае метка сохраняет заданные размеры независимо от размещённого в ней текста.

Если свойство WordWrap имеет значение true, то после заполнения текущей строки будет происходить перенос текста на новую строку.

Д
Ok
обавим к форме командную кнопку, при щелчке на которой будет выполняться пересчёт введённого в поле ввода количества дюймов в сантиметры.

Пиктограмма командной кнопки .

В таблице приведены изменённые свойства командной кнопки.

Name

Button1

Caption

Пересчёт

Top

48

Left

184

Height

25

Width

75

О
кончательный вид формы приложения:


Событие и процедура обработки события

Вид созданной формы подсказывает, как работает приложение. Пользователь должен ввести количество дюймов в поле редактирования, затем щёлкнуть на кнопке Пересчёт. Щелчок на изображении командной кнопки – это пример того, что в Windows называют событием. Щелчок кнопкой мыши – это событие OnClick. В Delphi реакция на событие реализуется как процедура обработки события. Таким образом, задача программиста при работе в Delphi состоит в написании процедур обработки событий.

Сначала следует маркировать (выделить) объект, для которого создаётся процедура обработки события. В нашем случае это командная кнопка Пересчёт. Затем выбрать вкладку Events (события) окна Object Inspector.

Чтобы создать процедуру обработки события, надо сделать двойной щелчок в поле имени процедуры обработки события. В результате открывается окно редактора кода с макетом процедуры обработки события. Delphi автоматически присваивает процедуре обработки события имя, которое состоит из двух частей. Первая часть идентифицирует форму, которой принадлежит объект, для которого создаётся процедура обработки события. Вторая часть имени идентифицирует сам объект и событие. В нашем случае имя формы – Form1, имя командной кнопки – Button1, имя события – Click.

Событие OnClick является для командной кнопки Button событием по умолчанию. Поэтому макет процедуры обработки этого события можно добавить в программный код, сделав двойной щелчок левой клавишей мыши по кнопке Пересчёт.

В окне редактора кода между begin и end можно печатать инструкции Object Pascal, реализующие процедуру обработки события. Между заголовком процедуры и словом begin необходимо добавить описание используемых в процедуре локальных переменных.

Исходные данные программа получает из окна редактирования Edit1. То, что мы введём в это окно, будет присвоено свойству Text компонента Edit1. Свойство Text имеет строковый тип. Поэтому мы должны введённую строку преобразовать в число с помощью одной из следующих функций преобразования типов:

StrToInt(s) – возвращает целое число, изображением которого является строка s.

StrToFloat(s) – возвращает вещественное число, изображением которого является cтрока s.

Таким образом, инструкция, которая присваивает вещественной переменной d значение числа, изображением которого является строка, введённая в поле Edit1, выглядит следующим образом:

d:=StrToFloat(Edit1.Text);

После вычисления количества сантиметров, соответствующих введённому количеству дюймов, необходимо вывести сообщение о результатах вычисления в поле метки Label2. Для этого нужно строку текста сообщения, заключённую в апострофы, присвоить свойству Caption метки Label2. При этом нужно встречающиеся в строке сообщения числа преобразовать в строку с помощью одной из следующих функций преобразования типов:

IntToStr(n) – строка, являющаяся изображением целого числа n.

FloatToStr(n) – строка, являющаяся изображением вещественного n.

FloatToStrF(n,f,l,m) –строка, являющаяся изображением вещественного n;

при вызове функции указываются:

f – формат (способ изображения);

l – общее количество цифр;

m – количество цифр после десятичной точки.

Соответствующая инструкция будет выглядеть следующим образом:

Label2.Caption:=Edit1.Text + ' дюйм(а/ов) это ' + FloatToStrF(sm, ffGeneral, 6, 2) + ' см ';

Здесь знак    является знаком операции конкатенации (склеивания строк). Для перехода на новую строку добавляется символ с кодовым номером 13 (#13).

Полный текст процедуры обработки события OnClick для кнопки Button1:

procedure TForm1.Button1Click(Sender: TObject);

var d,sm:real;

begin

d:=StrToFloat(Edit1.Text);

sm:=d*2.54;

Label2.Caption:=Edit1.Text+' дюйм(а/ов) это '+

FloatToStrF(sm,ffGeneral,6,2)+' см ';


end;


Сохранение проекта

В терминологии Delphi проект – это набор файлов, используя которые компилятор создаёт файл исполняемой программы. Один из этих файлов, содержащий общее описание проекта, называется файлом проекта и имеет расширение dpr. Проект также включает в себя один или более модулей, файлы которых имеют расширение pas и содержат тексты процедур, функций, описание типов и другую информацию, необходимую компилятору для создания исполняемой программы.

Чтобы сохранить проект, надо из меню File выбрать команду SaveProjectAs. Если проект ещё ни разу не был сохранён, то в ответ Delphi сначала выводит диалоговое окно SaveUnit1As. В этом окне следует выбрать папку, предназначенную для хранения всех проектов Delphi. В этой папке следует создать новую отдельную папку для файлов данного сохраняемого проекта. Для этого использовать кнопку “Создание новой папки”. Рядом с появившимся значком новой папки в рамке напечатать имя папки проекта – Дюйм и нажать Enter. Затем открыть эту созданную папку и в поле Имя файла либо ввести имя, например, inch_, либо согласиться с предложенным именем ( Unit1 ), и щелкнуть на кнопке Сохранить. После этого появляется следующее диалоговое окно SaveProject1As, где в качестве типа файла указано Delphi project ( . dpr). В поле Имя файла введём название файла проекта inch (без знака подчёркивания ) или можно согласиться с предложенным именем ( Project1 ).

Замечание. Хотя файлы, имеющие одинаковые имена, но разные расширения операционной системой рассматриваются как разные файлы, однако при попытке присвоить файлу проекта такое же имя, какое присвоено модулю проекта, Delphi выдаёт сообщение об ошибке. Следует обратить внимание, что имя исполняемого файла проекта, создаваемого компилятором, совпадает с именем файла проекта. Поэтому файлу проекта следует присвоить то имя, которое должен иметь исполняемый файл программы, а файлу модуля – какое-либо другое, например, полученное из имени файла проекта путём добавления в конец имени цифры или символа (в нашем проекте _ ).


Компиляция

После сохранения проекта можно, выбрав команду Compile из меню Project, откомпилировать приложение. Чтобы после завершения компиляции окно Compiling появлялось на экране, надо из меню Tools выбрать команду Environment Options, в открывшемся диалоговом окне выбрать вкладку Preferences и установить флажок Show compiler progress.


Запуск приложения из среды программирования

Выполнение приложения можно запустить из среды программирования, не завершая работу в Delphi. Для этого надо выбрать команду Run из меню Run.

В
ид работающего приложения:


Следует обратить внимание, что формат ввода вещественных чисел в поле редактирования предполагает десятичную запятую, а не точку.

Задачи.

1. Создать проект для пересчёта суммы в долларах по данному курсу в рубли. Окно приложения:






2. Создать проект для вычисления стоимости телефонного разговора в зависимости от дня недели. (Цена одной минуты разговора 0,15руб. В субботу и воскресенье скидка 20%) Окно приложения:





3. Создать проект для определения оптимального веса. Программа запрашивает ваш вес и рост, вычисляет оптимальное для вас значение веса (рост минус 100), сравнивает его с реальным, и в зависимости от результата сравнения выводит одно из следующих сообщений

Ваш вес оптимален.

Вам надо поправиться на кг.

Вам надо похудеть на кг.

О
кно приложения:


4. Дано натуральное число n . Получить двоичное представление числа n. Окно работающего приложения:




5. Составить таблицу значений линейной функции y = ax + b на отрезке [0, 1] с шагом 0,1.



6*. Дан одномерный целочисленный массив из 10 элементов, введённых в поле редактирования Edit. Числа массива разделены пробелами. Найти произведение отрицательных элементов массива. Для решения задачи оформить процедуру readmassiv(s:string; var aa:mas); , позволяющую в строке s выделять подстроку, изображающую число, и заполнять этими числами массив aa.




Окончательная настройка приложения

После того как программа отлажена, необходимо выполнить её окончательную настройку: назначить приложению значок, который будет изображать исполняемый файл приложения в папке или на рабочем столе. Этот же значок будет находиться во время работы программы рядом с её именем на панели задач Windows.

Д
ля того чтобы назначить приложению значок, необходимо из меню Project выбрать команду Options и в открывшемся диалоговом окне Project Options выбрать вкладку Application.


В поле Title следует ввести название приложения. Во время работы приложения его название выводится на панели задач Windows рядом со значком, изображающим приложение. Для выбора значка необходимо нажать кнопку Load Icon. В открывшемся диалоговом окне Application Icon следует просмотреть имеющиеся каталоги и найти файл подходящего значка (значки хранятся в файлах с расширением .ico). Выбрав нужный значок, нажмите Открыть. В результате диалоговое окно Application Icon закроется, и вновь появится диалоговое окно Project Options, в котором теперь отображается выбранный значок приложения. Для завершения процесса нажмите кнопку OK.


Установка приложения

З
начок приложения можно поместить в одно из меню панели задач Windows. Для этого необходимо в главном меню Windows, которое открывается щелчком по кнопке Пуск на панели задач, выбрать команду Настройка, а затем команду Панель задач. В открывшемся диалоговом окне Свойства: Панель задач на вкладке Настройка меню следует нажать кнопку Добавить.

В открывшемся диалоговом окне Создание ярлыка в поле Командная строка необходимо ввести имя исполняемого файла приложения с указанием пути к нему. Для ввода имени файла приложения можно воспользоваться кнопкой Обзор, нажатие которой открывает диалоговое окно поиска нужного файла.






П
осле ввода командной строки следует нажать кнопку Далее и в открывшемся диалоговом окне Выбор папки выбрать одну из папок меню Программы. Для того чтобы установить программу в новую папку, необходимо нажать кнопку Создать папку и ввести имя новой папки, например Практикум Delphi.


Нажатие кнопки Далее открывает диалоговое окно Выбор названия программы. В поле Укажите название ярлыка следует ввести текст, который будет выводится рядом со значком, изображающим приложение в списке программ папки. После нажатия кнопки Готово в указанной папке появляется строка, позволяющая запустить созданное приложение выбором команды в главном меню Windows.





Структура простого проекта Delphi.

Проект Delphi представляет собой набор программных единиц – модулей. Один из модулей, называемый главным, содержит инструкции, с которых начинается выполнение программы. Главный модуль приложения автоматически формируется Delphi. Он хранится в файле с расширением .dpr. Для того чтобы увидеть текст главного модуля приложения, необходимо из меню Project выбрать команду View Source.

Текст главного модуля программы пересчёта дюймов в сантиметры.

program Project1;

uses

Forms,

Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin

Application.Initialize;

Application.Title := 'Дюйм';

Application.CreateForm(TForm1, Form1);

Application.Run;

end.


За словом uses следуют имена используемых модулей: библиотечного модуля Forms и модуля формы Unit1. Директива {$R *.RES} указывает компилятору, что нужно использовать файл ресурсов, который содержит описания ресурсов приложения, например, пиктограммы. Звёздочка показывает, что имя файла ресурсов такое же как у файла проекта, но с расширением .res.

Инструкции исполняемой части главного модуля обеспечивают инициализацию приложения и вывод на экран стартового окна.

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

Текст модуля формы проекта пересчёта дюймов в сантиметры.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;

type

TForm1 = class(TForm)

Edit1: TEdit;

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

var d,sm:real;

begin

d:=StrToFloat(Edit1.Text);

sm:=d*2.54;

Label2.Caption:=Edit1.Text+' дюйм(а/ов) это '+

FloatToStrF(sm,ffGeneral,6,2)+' см ';

end;

end.


Начинается модуль словом unit, за которым следует имя модуля. Именно это имя упоминается в списке используемых модулей в инструкции uses главного модуля приложения.

Интерфейсный раздел модуля ( interface ) сообщает компилятору, что именно в этом модуле является доступным для других модулей проекта. В этом разделе перечислены (после слова uses) библиотечные модули, используемые данным модулем, а также находится сформированное Delphi описание типа формы, которое следует после слова type. Затем описывается переменная Form1 данного типа.

Раздел реализации (implementation) начинается директивой {$R *.DFM}, указывающей компилятору, что в раздел реализации надо вставить инструкции установки значений свойств формы, которые находятся в файле с расширением .dfm, имя которого совпадает с именем модуля. Файл в формате DFM генерируется Delphi на основе внешнего вида формы.

За директивой {$R *.DFM} следует описание процедур обработки событий формы. Сюда же программист может поместить описание своих процедур и функций, которые будут вызываться из процедур обработки событий.

В модуле может также содержаться раздел инициализации, который позволяет выполнить инициализацию переменных модуля. В данном примере раздел инициализации отсутствует вместе с открывающим его словом begin.