Программы Delphi называются проектами, каждый из которых создает файл с расширением .dpr. По умолчанию ему присваивается имя Project и номер.
Структура программы:
Program Project1; - название проекта
Uses – далее перечисляются модули, используемые в проекте, в нашем случае это -
Forms, - модуль формы и
Unit1 in ‘Unit1.pas’ [Form1]; - модуль, для которого указано имя файла в котором он располагается и форма с которой он связан
[$R*.res] – команда компилятору
begin - далее идет исполняемы код программы
Aplication.Initialize; - иницилиализирует приложение
Aplication.CreateForm(TForm1,Form1); - создает форму
Aplication.Run; end. – запускает приложение на выполнение
Delphi представляет собой полностью объектно-ориентированную среду. Это означает, что в Delphi новые объекты можно создавать либо с нуля, либо используя уже имеющиеся. Это относится ко всем объектам – как визуальным, так и невизуальным (и даже к формам).
Объекты представляют собой сущности, которые могут содержать данные и код. Объекты Delphi представляют программисту все основные возможности объектно-ориентированного программирования, такие как наследование, инкапсуляция и полиморфизм.
Перед тем как объект использовать, его следует объявить. В Delphi это делается с помощью ключевого слова class. Объявления объектов помещаются в раздел объявления типов модуля или программы:
type
TFooObject = class;
После объявления типа объекта можно выполнить объявление переменных (называемых также экземплярами) этого типа в разделе var:
var
FooObject: TfooObject;
В Delphi экземпляр объекта создается с помощью вызова одного из конструкторов этого объекта. Конструктор отвечает за создание экземпляра объекта, а также за выделение памяти и необходимую инициализацию полей. Он не только создает объект, но и приводит его в состояние, необходимое для его дальнейшего использования. Каждый объект содержит по крайней мере один конструктор Create(), который может иметь различное количество параметров разного типа – в зависимости от типа объекта.
Синтаксис вызова конструктора следующий:
FooObject :=TFooObject.Create;
По окончанию использования экземпляра объекта следует освободить выделенную для него память с помощью метода Free():
FooObject.Free;
Понятие компонента является фундаментальным для среды Delphi.
Существует два взгляда на компоненты.
- Взгляд снаружи, точнее из среды визуальной разработки приложений. С этой точки зрения компоненты — это самодостаточные строительные блоки из палитры компонентов переносимые на форму для создания приложения. Это кнопки, списки, надписи и др.
- Существует еще и взгляд изнутри, т.е. взгляд из программы на языке Delphi. С этой точки зрения компоненты — это классы, порожденные прямо или косвенно от класса TComponent и имеющие published-свойства. Экземпляры компонентов — это объекты этих классов, существующие в качестве полей формы. Среди опубликованных свойств компонентов обязательно присутствует имя (Name), под которым экземпляр компонента представляется в окне свойств.
Объединение этих двух точек зрения дает цельное представление о том, что такое компоненты. При работе с компонентами из среды визуальной разработки приложений мы видим их лицевую сторону. Однако программная сторона компонентов по своей сути - объекты. Таким образом, среда Delphi обеспечивает симбиоз визуального и объектно-ориентированного программирования.
Состояние компонента определяется его свойствами. Свойства бывают изменяемые (для чтения и записи) и неизменяемые (только для чтения). Помимо этого, свойства могут получать значения либо на этапе проектирования, либо только во время выполнения программы. Первые устанавливаются для каждого компонента в окне свойств и определяют начальное состояние компонента. Во время выполнения приложения эти свойства могут быть изменены программно, соответственно изменится внешний вид и поведение компонента. Вторая группа — это свойства, которые не видны в окне свойств, и управлять которыми можно только программно. С точки зрения языка Delphi различие между этими группами свойств состоит в том, что первые объявлены в секции published, а вторые — в секции public. Поведение компонента описывается с помощью его процедур и функций (методов). Вызовы методов компонента помещаются в исходный код программы и происходят только во время выполнения приложения. Методы не имеют под собой визуальной основы. Обратная реакция компонента — это его события. События позволяют, например, связать нажатие кнопки с вызовом метода формы. События реализуются с помощью свойств, содержащих указатели на методы
Все компоненты делятся на две группы: визуальные и невизуальные компоненты.
Визуальные компоненты — это видимые элементы пользовательского интерфейса: кнопки, метки, блоки списков и др. Они выглядят одинаково и на стадии проектирования, и во время работы приложения.
Невизуальные компоненты — они работают, но сами на экране не видны. К невизуальным компонентам относятся таймер, компоненты доступа к базам данным и др. В процессе проектирования такие компоненты представляются на форме небольшим значком. Их свойства устанавливаются в окне свойств.
Модули – это логически независимые части проекта, описывающие работу или конкретной формы или вычислительного процесса. Каждый модуль обычно является самодостаточным и в принципе может работать автономно. При создании нового проекта в окне имеется только один модуль кода, который называется по умолчанию Unit1. Он содержит минимальный исходный код, обеспечивающий нормальное функционирование главной формы проекта Form1 в качестве полноценного окна среды Windows и оформляется по правилам языка программирования Object Pascal.
Любой модуль в среде Delphi имеет следующую структуру:
unit <имя модуля>; [Заголовок]
interface
[Секция интерфейсных объявлений, аналог раздела описаний]
implementation
[Секция реализаций, аналог блока операторов]
initialization
[Секция инициализации, может отсутствовать]
finalization
[Секция завершения, может отсутствовать ]
end. [Терминатор, то есть указатель конца кода модуля]
Имя модуля должно совпадать с именем файла на диске, в котором помещается его текст. Имя модуля служит для его связи с другими модулями и основной программой. Эта связь устанавливается с помощью оператора uses, помещаемого в самом начале секций интерфейсных объявлений или реализаций:
uses <список модулей>;
В интерфейсной секции содержится объявление всех глобальных объектов модуля: типов, констант, переменных и подпрограмм, которые должны быть доступны основной программе и другим модулям. При объявлении глобальных подпрограмм в интерфейсной секции указывается только их заголовок.
Секция реализации содержит описание подпрограмм, объявленных в интерфейсной секции. Здесь же могут объявляться локальные объекты модуля: типы, константы, переменные и подпрограммы, а также метки, если они используются в секции инициализации.
Секция инициализации содержит операторы, которые должны быть выполнены до передачи управления основной программе и служат для подготовки ее работы. Например, инициализация переменных, открытие файлов и т.д.
В секции завершения указываются операторы, выполняемые после завершения работы основной программы, например, освобождение памяти, закрытие файлов и т.д.
Терминатор указывает, что текст программного кода модуля закончен. Все операторы после терминатора игнорируются компилятором.
Типы модуле:
Модуль формы со связанным с ним окном наиболее распространен. Интерфейсная част такого модуля обычно содержит объявление нового класса и автоматически обновляется в ходе конструирования окна.
Модули данных имеют связанные с ними окна. Однако эти окна никогда не появляются на экране. Модули предназначены для доступа к данным, а для этого необходимы такие компоненты как диалоговые окна, таймеры и т.д., которые можно вставлять только в форму. Такие модули используются для работы с базами данных.
Модули динамических библиотек предназначены для создания широкоиспользуемых Windows-библиотек. Это файлы с расширением .dll.
Пакеты – особо откомпилированные .dll-библиотеки. Разрабатываются для хранения различных компонент Delphi и имеют расширение .bpl.
Модули потоков команд предназначены для реализации потоков команд, т.е. фрагментов программы, которые исполняются совместно с другими фрагментами и разделяют с ними системные ресурсы.