Этапы создания оконного приложения

      Комментарии к записи Этапы создания оконного приложения отключены

После запуска Delphi 6 на экране компьютера можно увидеть (см. рис. 1):

Рис. 1. Окна и панели среды Delphi 6

1 – в верхней части экрана расположено главное меню, обеспечивающее доступ к командам среды программирования; главное меню содержится в так называемом главном окне, имеющем заголовок: Delphi 6 – Project1;

2 – в главном окне содержатся панели инструментов, позволяющие быстро выполнять многие часто используемые команды главного меню;

3 – в правой нижней части главного Окна располагается Палитра Компонентов, содержащая большой набор объектов, которые можно добавлять в форму; именно компоненты являются средством создания приложений в среде Delphi;

4 – на середине экрана находится окно формы с заголовком Form1, которое используется для размещения компонентов Delphi;

5 – окно редактора кода, содержащее код программы, по умолчанию имеет заголовок Unit1.pas и предназначено для создания и редактирования кода программы;

6 – окно Инспектора Объектов (Object Inspector)позволяет изменять свойства, характеристики компонентов;

7 – окно Дерева Объектов (Object TreeView) является новшеством, появившемся Delphi 6; в этом окне отображаются компоненты, размещенные на форме, модуле данных или фрейме, а также логические отношения, существующие между ними, например отношение родительский-дочерний.

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

Свойствами объекта являются, например, его размер (высота и ширина), положение на экране или на форме, текст заголовка или текст на командной кнопке.

Событие – это то, что происходит во время работы приложения. В Delphi у каждого события есть имя. Например, щелчок кнопкой мыши – это событие OnClick, двойной щелчок мышью – событие OnDblClick, при нажатии клавиши возникает событие OnKeyDown, а при отпускании нажатой клавиши – OnKeyUp и т.д. Реакцией на событие может быть какое-либо действие, например, реакцией на событие OnClick, произошедшее по щелчку кнопкой мыши на командной кнопке в диалоговом окне, может быть выполнение вычислений по заданным формулам и выдача результата. В Delphi реакция на событие реализуется какпроцедура обработки события. Таким образом, задача программиста состоит в написании необходимых процедур обработки событий.

Укрупненно процесс создания простейшего оконного приложения можно разбить на два этапа: этап конструирования формы и этап программирования. Рассмотрим эти этапы более детально.

Перечислим операции, которые выполняются на этапе конструирования формы.

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

2. Помещенный на форму компонент можно перемещать по форме при помощи мыши и изменять его размеры, используя маркеры, обрамляющие выделенный компонент.

3. Для того чтобы придать компоненту нужные свойства, следует использовать страницу Properties в окне Инспектора Объектов. Эта страница состоит из 2-х колонок: левая колонка содержит название свойства, а правая – конкретное значение свойства. Окно Инспектора Объектов отображает информацию для того компонента, который выделен щелчком мыши. Строки страницы этого окна выбирают щелчком мыши и могут отображать простые или сложные свойства. К простым относятся свойства, которые определяются одним значением – числом, строкой символов, значением False или True и т.д. Сложные свойства определяются совокупностью значений. Слева от имени таких свойств указывается символ «+». Двойной щелчок по имени такого свойства приводит к раскрытию списка значений сложного свойства. Закрывается раскрытый список также двойным щелчком мыши по имени сложного свойства. Интересным новшеством в Delphi 6 является добавление в Инспекторе Объектов так называемыхрасширенных встроенных компонентных ссылок (expanded inline component references) или, короче, встроенных компонентов. Под этим термином подразумеваются некоторые свойства компонентов, значениями которых являются имена других компонентов (т.е. ссылки на другие компоненты). Например, у многих компонентов имеется свойство PopupMenu, содержащее имя компонента, являющегося контекстным меню. Свойства, которые содержат ссылку на встроенный компонент, отображаются в Инспекторе Объектов по умолчанию красным цветом. Когда такому свойству присваивают значение, около него появляется символ «+». Если выполнить двойной щелчок по свойству, содержащему имя встроенного компонента либо просто щелкнуть по символу «+», то раскроется список свойств встроенного компонента. Свойства встроенного компонента по умолчанию отображаются зеленым цветом.

В результате выполнения указанных операций будет сформирован внешний вид окна будущей программы. Для того чтобы программа выполняла какую-то полезную работу, необходимо перейти ко второму этапу – этапу программирования. Рассмотрим основные особенности этого этапа.

1. Каждый компонент может реагировать на определенный набор событий. Для того чтобы узнать, на какие именно события откликается компонент, необходимо выделить его щелчком мыши на форме, после чего перейти на страницу Events Инспектора Объектов (см. рис. 2).

Страница содержит две колонки. В первой колонке перечислены имена событий, на которые откликается компонент, вторая заполняется программистом и содержит имена созданных обработчиков событий. Теоретически можно создать обработчики для всех событий, для отдельных событий либо вовсе не создавать обработчиков событий для данного компонента. В последнем случае компонент может быть использован в обработчиках событий, созданных для других компонентов. Можно создать обработчик какого–то одного события, а затем на странице Events Инспектора Объектов указать его имя для других событий, имеющих такой же тип. В этом случае одна и та же процедура будет выполняться при возникновении различных событий. Таким образом, на этапе программирования прежде всего нам необходимо определить, на какие события должен откликаться тот или иной компонент, и на странице Events Инспектора Объектов ввести имя создаваемого обработчика.

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

procedure TForml.LabellClick(Sender: TObject);

Здесь TForm1 – имя класса создаваемой формы, Label1Click – вторая часть имени обработчика события, созданная автоматически Delphi и означающая, что процедура будет выполняться, если по компоненту с именем Label1 (метка) щелкнуть левой кнопкой мыши. Параметр Sender типа TObject содержит ссылку на компонент, который создал событие OnClick (т.е. на Label1).

3. После того как вы указали имя обработчика события на странице Events Инспектора Объектов либо не указали его, так как имя будет создано автоматически Delphi, необходимо создать заготовку обработчика события. Для этого в Инспекторе Объектов выполним двойной щелчок по полю, предназначенному для имени создаваемого обработчика. В результате в окно редактора кода будет добавлена заготовка для обработчика, например:

procedure TForm1.Label1Click(Sender: TObject);

begin

end;

Тело процедуры ограничено зарезервированными словами begin…end, междукоторыми программист должен размещать свои операторы.

4. Среди операторов, вставляемых программистом, могут быть и такие, которые изменяют значения свойств компонентов, расположенных на форме. Это означает, что свойства компонентов можно изменять не только при помощи Инспектора Объектов на этапе конструирования, но и в процессе выполнения программы. Изменение свойств компонентов в процессе выполнения программы называется динамическим изменением свойств.

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

Между содержимым окна формы и окна редактора кода существует неразрывная связь, которая строго контролируется Delphi. Например, размещение на форме компонента приводит к автоматическому изменению кода программы. Как уже было сказано выше, автоматически создаются также заготовки для обработчиков событий. Программист при этом может наполнять заготовки конкретным содержанием – вставлять операторы, добавлять описания собственных переменных, типов, констант и т.д. При этом программист должен помнить, что ему нельзя удалять из текста программы те строки, которые вставила туда среда Delphi.

Структура проекта Delphi

Программа Delphi – это несколько связанных между собой файлов. Так, любая программа всегда состоит из уже знакомого нам файла проекта (такой файл имеет расширение .dpr) и одного или нескольких модулей (файлы с расширением .pas). Файл проекта не предназначен для редактирования пользователем и создается автоматически самой системой программирования Delphi. Для того чтобы увидеть содержимое файла проекта, необходимо выполнить команду Project ? View Source. Содержимое файла проекта может быть, например, следующим:

program Project1;

uses

Forms,

Unit1 program Project1;

uses

Forms,

Unit1 in’Unit1.pas’ {Form1};

{$R *.res}

Begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

End.

Файл проекта (главный модуль) начинается словом program, за которым следует имя программы, совпадающее с именем проекта. Имя проекта задается программистом в момент сохранения файла проекта, и оно определяет имя создаваемого средой Delphi исполняемого файла (файла с расширением .ехе). Далее за словом uses следуют имена используемых модулей: стандартного модуля Forms и модуля формы Unit1. Похожая на комментарий директива {$R *.res} указывает компилятору, что нужно использовать файл ресурсов, который содержит описание ресурсов приложения, например, пиктограммы. Звездочка указывает, что имя файла ресурсов такое же, как и у файла проекта, но с расширением .res.

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

Помимо главного модуля каждая программа включает как минимум один модуль формы, который содержит описание стартовой формы приложения и поддерживающих ее работу процедур. В Delphi каждой форме соответствует свой модуль. Для переключения между формой и окном редактора кода, содержащего соответствующий модуль, следует выполнить команду главного меню View ?Toggle Form/Unit, либо нажать функциональную клавишу F12, либо на панели инструментов View щелкнуть мышью по кнопке

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

Модули имеют стандартную конструкцию (последовательность и перечень разделов), предусмотренную языком программирования Object Pascal. Приведем структуру модуля общем виде:

unit ;

interface

implementation

initialization

finalization

end.

В качестве примера приведем содержимое модуля в том виде, в котором он находит–сразу после загрузки среды Delphi:

unit Unit1;

interface

uses

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

Dialogs;

type

TForm1 = class(TForm)

procedure Label1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

end.

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

Модуль может состоять из четырех разделов: интерфейса, реализации, инициализации завершающей части.

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

Раздел реализации начинается словом implementation и содержит объявления локальных переменных, процедур и функций, поддерживающих работу формы. В начале раздела реализации располагается директива {SR *.dfm}, указывающая компилятору, что в раздел реализации надо вставить команды установки значений свойств формы, которые находятся в файле с расширением .dfm , имя которого совпадает с именем модуля. Файл в формате dfm генерируется Delphi на основе внешнего вида формы.

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

Инициирующая и завершающая части являются необязательными.

Инициирующая часть начинается словом initialization либо заключается в операторные скобки begin… end. Операторы из этой части выполняются до передачи управления основной программе и обычно используются для подготовки ее работы.

Завершающая часть начинается словом finalization и содержит операторы, выполняющиеся в момент окончания программы.

В приведенном выше примере модуля инициирующая и завершающая части отсутствуют.

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

При компиляции программы Delphi создает файлы с расширениями .dcu для каждого модуля.

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

Статьи к прочтению:

ЭТАПЫ создания мобильных приложений. Для начинающих.


Похожие статьи: