Основы алгоритмизации и программирования - Учебное пособие (Струков В.М.)

9. работа в среде delphi

9.1. Структура приложения.

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

В состав проекта приложения входят следующие основные элементы:

описание проекта (файл *.DPR);

описания форм (файл *.DFM);

модули форм (файлы *.PAS);

программные модули (файлы *.PAS);

описание ресурсов (файл *.RES);

описание параметров проекта  (файл *.DOF);

описание конфигурации среды проекта  (файл *.CFG);

объектные модули (файл *.DCU);

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

Файл *.DPR – это текстовый файл, в котором хранится текст программы с головным модулем приложения. Этот текст автоматически формируется транслятором при запуске Delphi. В нем содержатся операторы инициализации и запуска приложения на выполнение. Содержимое стартового файла проекта имеет вид:

program Project1;

uses

         Forms,

         Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin

         Application.Initialize;

         Application.CreateForm(TForm1, Form1);

         Application.Run;

end.

В процессе добавления в проект новых компонентов (например, новых форм) текст этого файла модифицируется автоматически. По умолчанию содержимое этого файла не отображается на экране. При необходимости его можно просмотреть с помощью меню View, пункт Units…, строка Project1:

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

object Form1: TForm1

  Left = 192

  Top = 114

  Width = 544

  Height = 375

  Caption = 'Form1'

  Color = clBtnFace

  Font.Charset = DEFAULT_CHARSET

  Font.Color = clWindowText

  Font.Height = -11

  Font.Name = 'MS Sans Serif'

  Font.Style = []

  OldCreateOrder = False

  PixelsPerInch = 96

  TextHeight = 13

end

Для каждого файла формы Delphi автоматически создает текстовый файл модуля формы (*.PAS), который содержит описание класса формы, включая тексты обработчиков событий, которые определяют функциональное наполнение приложения для данной формы. Для стартовой формы файл модуля формы имеет вид:

unit Unit1;

interface

uses

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

type

  TForm1 = class(TForm)

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

implementation

{$R *.dfm}

end.

Этот файл по умолчанию отображается в окне редактора кода программы. Если кроме программных модулей, непосредственно связанных с формой, разработчик приложения создает другие программные модули, не связанные с визуальными компонентами, то они сохраняются в отдельных файлах (*.PAS) и подключаются к проекту в предложениях Uses.

В процессе компиляции проекта транслятор автоматически создает в папке проекта для каждого программного модуля (*.PAS) файл с его объектным кодом (*.DCU).

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

Настроечные параметры текущего проекта автоматически записываются в файл параметров проекта (*.DOF). Значения параметров формируются по умолчанию и с помощью окна параметров проекта, которое активизируется с помощью меню Project, команда Options… (рис. 9.1.). Файл параметров проекта представляет собой текстовый файл, содержащий обозначения параметров и их значения.

В файле конфигурации среды проекта (*.CFG) хранятся установки режимов работы интегрированной среды Delphi, в частности директивы компилятора. Информация в этом файле также хранится в текстовом виде. Установка параметров среды проекта выполняется с помощью диалогового окна Environment Options:

Это окно активизируется через меню Tools, пункт Environment Options.

Кроме перечисленных выше файлов система автоматически создает в процессе работы их резервные копии, которые имеют расширения, соответственно, *.~DPR, *.~DFM, *.~PAS, *.~DCU,  *.~DOF, *.~CFG, *.~RES. 

9.2. Формирование выполняемого модуля приложения

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

Войти в меню Project и выбрать пункт Options. При этом откроется  диалоговое окно Project Options с несколькими закладками.

Открыть закладку Directories/Conditionals:

На странице этой закладки в поле Output directory области Directories  нужно внести полное имя папки, в которой в дальнейшем будет храниться файл с ехе-модулем приложения. Это можно выполнить одним из двух способов: 1) непосредственно в указанное поле ввести с клавиатуры полное имя нужной папки, либо 2) с помощью браузера (кнопка   ) найти нужную папку и щелкнуть Ok. В результате этой операции транслятор установит по умолчанию на время текущего сеанса работы введенную папку выходной, куда будут направляться результаты трансляции и компоновки модулей, а также сохранятся модули и проекты по команде Save.

Перейти на страницу закладки Application:

В поле Title ввести с клавиатуры заголовок приложения, который будет отображаться в окне Windows рядом с иконкой приложения.

Назначить пиктограмму приложению. Для этого нужно щелкнуть кнопку  , в результате чего появится следующее окно:

Далее необходимо в этом окне перейти к папке, которой хранятся файлы с иконками (например, папка Program FilesCommon FilesBorland SharesImagesIcons), выбрать требуемую иконку и щелкнуть кнопку Открыть.

На странице окна Project Options щелкнуть кнопку OK.

Выполнить компиляцию проекта: войти в меню Project и выполнить команду Compile …

Далее можно ярлык сформированной иконки вынести на Рабочий стол или в другое требуемое место.

9.3. Создание приложений с несколькими формами.

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

Подключение новой формы к приложению предполагает выполнение трех этапов:

Добавление нового компонента формы к проекту.

Программная реализация взаимодействия форм проекта.

Определение главной формы проекта.

Добавление новой формы к проекту можно выполнить несколькими способами. Самый простой способ состоит в использовании меню File: в подменю New выполнить пункт Form. В этом случае к проекту добавляется пустая заготовка формы и сопутствующий ей программный модуль Unit… Delphi позволяет добавить и более сложные шаблоны форм, которые уже содержат

другие компоненты. Это можно выполнить, используя меню File: в подменю New выполнить пункт Other… :

Некоторые несложные и наиболее распространенные заготовки форм содержатся в таких закладках, как Forms, Dialogs.

Программная реализация взаимодействия форм проекта предполагает а) организацию взаимодействия на уровне программного интерфейса и б) программную реализацию активизации новой формы.

Для обеспечения взаимодействия форм нужно в вызывающем модуле (например, Unit1) организовать ссылку на модуль вызываемой формы. Это можно сделать автоматически (меню File  пункт Use Unit…) или вручную – в раздел implementation вызывающего модуля (например, модуля Unit1) ввести оператор Uses Unit… (например, Uses Unit2;).

Для активизации добавленной формы во время выполнения приложения можно воспользоваться методом Show или  ShowModal:

Form2.Show;

Form2.ShowModal;

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

Метод ShowModal активизирует так называемую модальную форму. В таком случае система может работать только с модальной формой вплоть до ее закрытия. Все остальные формы до закрытия модальной формы заблокированы.

Это же можно сделать с помощью следующего оператора:

Form2:= TForm2.Create(Self);

Пример простейшей программы взаимодействия двух форм (Form1 и Form2):

unit Unit1;

interface

uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,                Forms, Dialogs, StdCtrls;

type

  TForm1 = class(TForm)

       Button1: TButton;

       procedure Button1Click(Sender: TObject);

 private

       { Private declarations }

 public

       { Public declarations }

  end;

var

  Form1: TForm1;

implementation

    uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

 Form2.Show;

end;

end.

Главной формой называется форма, которая появляется на экране сразу после старта приложения. По умолчанию в качестве главной формы выбирается первая создаваемая форма. Для определения другой главной формы проекта нужно войти в подменю Options меню Project и перейти в закладку Forms.

Далее в выпадающем списке Main Form выделить главную форму и щелкнуть кнопку OK.