Среда программирования Delphi

Delphi – это программное обеспечение, предназначенное для создания программ под ОС Windows. В основе Delphi лежит язык Object Pascal (версия 9.0 языка ТР) и технология визуального проектирования и событийного программирования.

Отличия от традиционного программирования:

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

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

Что такое программа под Windows рассмотрим на простейшем примере. Пусть мы хотим создать программу для решения квадратного уравнения. Такую программу можно оформить так(рис.д4): (форма?? см. лист 10.4)

На форме разместим три поля для ввода значений коэффициентов А, В, С;

Затем поместим в форму поле для вывода

корня уравнения Х;

Около этих полей поместим соответствующие надписи;

В нижней части поместим кнопку с надписью "корень уравнения";

Разместим на форме также кнопку с надписью "закрыть".

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

Чтобы эта программа решала указанную задачу надо создать для кнопки "корень уравнения" обработчик события – процедуру, которая должна выполняться при нажатии на эту кнопку. Очевидно, что эта процедура должна выполнять следующие действия:

Вычислять корни уравнения по определенному алгоритму;

Записывать корни уравнения (или соответствующие сообщения) в поле вывода результатов.

Кроме того надо также создать обработчик события для кнопки "закрыть". При нажатии на эту кнопку окно программы должно исчезать с экрана.

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

Рабочее окно Delphi имеет типичны для приложений Windows вид.

При активизации иконки Delphi на рабочем столе Windows на экране появляется главное рабочее окно Delphi, показанное на рис.5.22.1.



На рисунке обозначено

1 - Главное окно Delphi ,

2 - Главное меню , содержит типичный для приложений Windows набор пунктов меню:

меню File – содержит пункты меню для создания нового проекта (New), открытия формы (Open), открытия проекта (Open Project), сохранения формы (Save As) или проекта (Save Project As) под другим именем, печати активной формы или модуля (Print) и др.

меню Edit – содержит обширный набор пунктов меню для редактирования формы и текста модуля формы, в том числе команды для копирования (Copy), вырезания (Cut), вставки (Paste), удаления (Delete), выделенных компонентов формы или фрагментов текста модуля формы;

меню Search - содержит набор пунктов меню для поиска и замены фрагментов текста;

меню View - содержит обширный набор команд для просмотра различных окон (от окна формы до регистров CPU);

меню Project - содержит команды для работы с проектом, в частности, команды:

Compile Имя проекта – компилирует модули, которые тзменились с момента компиляции предыдущей версии проекта;

Build Имя проекта – компилирует все модули проекта и создает исполняемую программу;

меню Ran – здесь располагаются команды связанные с выполнением программы, в частности команды:

Ran – компилирует программу и выполняет ее прогон;

Trace Into (клавиша F7) - в этом случае программа останавливается перед первым выполняемым оператором программы, т. е. будет выделено ключевое слово Begin раздела операторов. При каждом нажатии на клавишу F7 выполняется по одной строке программы (независимо от количества операторов на строке). Если в программе используются подпрограммы, то они также выполняются в пошаговом режиме;

Step Over (клавиша F8) - этот режим аналогичен предыдущему, но подпрограммы выполняются не по шагам, а полностью. Все эти режимы можно комбинировать в одном сеансе отладки. Для выхода из этих режимов отладки необходимо нажать комбинацию клавиш Ctrl + F2.

меню Component – содержит команды для работы с компонентами;

меню Database - содержит команды для работы с базами данных;

меню Tools - содержит команды для работы с окнами настройки параметров среды Delphi и ее инструментов;

меню Help - содержит команды для работы со справочной службой.

3 - Панель быстрого доступа (SpeedBar - находится непосредственно под меню) содержит набор кнопок, функции которых эквивалентны функциям наиболее часто используемых команд главного меню (программист может по своему усмотрению добавлять или удалять команды из полосы быстрого доступа - для этого необходимо расположить курсор в области панели, щелкнуть правой кнопкой мыши и выбрать команду Configure);

4 - Палитра (панель) визуальных компонентов .

Компоненты - это строительные блоки, из которых собирается Delphi приложение. В Delphi имеются визуальные и не визуальные компоненты. Все эти компоненты представлены в Палитре компонент, с помощью пиктограмм.

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

Палитра Компонент использует постраничную группировку объектов. Она содержит набор закладок - Standard, Additional, Dialogs и т.д. Для перехода на другую страницу Палитры Компонент достаточно щелкнуть мышью по соответствующей закладке.

5 - Инспектор объектов - это специальное окно для отображения значений свойств объектов и выбора методов - обработчиков событий в процессе разработки программы. Окно инспектора объектов (ИО) содержит две страницы: Properties (свойства) и Events (события). Свойства и события в окне инспектора объектов отображаются для выделенного на форме в данный момент объекта. Если на форме нет выделенных объектов, то в инспекторе объектов отображаются события и свойства формы.

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

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

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

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

Как стандартное окно Windows форма в Delphi обладает такими свойствами как:

Наличие заголовка (Caption);

Кнопка для вызова системного меню;

Кнопки для минимизации и максимизации окна;

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

Проект может содержать несколько форм.

7.Редактор модуля формы . Можно заметить, что под формой располагается еще одно окно. Это окно редактора модуля формы. В этом модуле программист создает программный код для обработчиков событий и решения основной задачи создаваемого приложения. Это окно можно активизировать щелкнув по выступающему краю (оно также автоматически получает фокус при щелчке по значению события в ИО). В этом случае окно редактора станет активным и мы увидим заготовку модуля:

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

type TForm1 = class(TForm)

private { Private declarations }

public { Public declarations }

var Form1: TForm1;

Здесь: Unit1 - имя модуля (при сохранении его можно заменить на любое другое имя);

В интерфейсной секции здесь указаны используемые модули; в разделе типов объявлен класс TForm1, как наследник класса TForm; а в разделе переменных объявлен объект Form1 класса Tform1.

Вопрос - где главная программа? - главная программа формируется автоматически и программисту нет необходимости вмешиваться в текст главной программы.

В прошлых уроках к примеру мы ознакомились с компонентом TButton и при написании обработчика события кнопки использовали для вывода сообщения процедуру ShowMessage. Поэтому, в этом уроке, предлагаю ознакомиться с основными процедурами и функциями для реализации диалоговых окон, и пример их использования.
Процедура ShowMessage , а также функции MessageDlg и MessageDlgPos отображают окно (панель) вывода сообщений. а функции InputBox и InputQuery отображают окно (панель) для ввода информации.
Процедура ShowMessage
Процедура ShowMessage (const Msg: String) отображает окно сообщения с кнопкой ОК . Заголовок этого окна содержит название исполняемого файла приложения, а строка Msg выводится как текст сообщения. В уроке , посвященному компоненту Delphi TButton (кнопка), используя ShowMessage, мы выводили на экран сообщение "Теперь кнопка Закрыть приложение активна".
Для примера давайте создадим новый проект и разместим на нем 5 кнопок (TButton). Как это делать мы уже знаем.
У первой кнопки изменим заголовок (свойство Caption) на "ShowMessage", у второй на "MessageDlg", у третьей на "MessageDlgPos", у четвертой на "InputBox" и у пятой на "InputQuery". Свойство Width у всех этих кнопок изменим на 100. И естественно дадим кнопкам понятные имена, для этого поменяем у кнопок свойство Name на "ShowMessageButton", "MessageDlgButton", "MessageDlgPosButton", "InputBoxButton" и "InputQueryButton".
Теперь давайте создадим обработчик события OnClick для кнопки ShowMessageButton и в нем напишем следующее:

200?"200px":""+(this.scrollHeight+5)+"px");">


Полностью наша процедура будет выглядеть так:

200?"200px":""+(this.scrollHeight+5)+"px");">procedure TForm1.ShowMessageButtonClick(Sender: TObject);
begin
ShowMessage("Это простое диалоговое окно.");
end;


Давайте скомпилируем и запустим нашу программу. Перед нами появится форма с 5-ю кнопками. Если нажать на кнопку ShowMessage , то перед нами появится сообщение "Это простое диалоговое окно".

Рисунок. Окно сообщения с кнопкой ОК, вызываемое процедурой ShowMessage

Поскольку название нашего проекта мы не меняли, то он у нас называется Project1 и соответственно в заголовке этого окна мы видим это имя.

Функция MessageDlg
Функция MessageDlg(const Msg: String; AType: TMsgDlgType; AButtons: TMsgDlgButtons; Helpctx: Longint) : word отображает окно сообщения в центре экрана и позволяет получить ответ пользователя. Параметр Msg содержит отображаемое сообщение.
Окно сообщения может относиться к различным типам и наряду с сообщением содержать картинки. Тип окна сообщения определяется параметром АТуре, который может принимать следующие значения:
mtWarning - окно содержит черный восклицательный знак в желтом треугольнике и заголовок Warning;
mtError - окно содержит белый косой крест в красном круге и заголовок Error;
mtInformation - окно содержит синюю букву «i» в белом круге и заголовок Information;
mtConfirmation - окно содержит синий знак «?» в белом круге и заголовок Confirmation;
mtCustom - окно не содержит картинки, в заголовке выводится название исполняемого файла приложения.

Параметр AButtons задает набор кнопок окна и может принимать любые комбинации следующих значений:
mbYes (кнопка Yes);
mbAbort (кнопка Abort);
mbNo (кнопка No);
mbRetry (кнопка Retry);
mbOk (кнопка OK);
mbIgnore (кнопка Ignore);
mbCancel (кнопка Cancel);
mbAll (кнопка All);
mbHelp (кнопка Help);

Для значения параметра AButtons имеются две константы - mbYesNoCancel и mbOKCancel , задающие предопределенные наборы кнопок:
mbYesNoCancel = ;
mbOKCancel =

При нажатии любой из указанных кнопок (кроме кнопки Help) диалоговое окно закрывается, а результат (свойство ModalResult) возвращается функцией MessageDlg .
Параметр HelpCtx определяет контекст (тему) справки, которая появляется во время отображения диалогового окна при нажатии пользователем клавиши F1. Обычно! значение этого параметра равно нулю.
Ниже приведен пример использования функции MessageDlg:

200?"200px":""+(this.scrollHeight+5)+"px");">procedure TForm1.MessageDlgButtonClick(Sender: TObject);
var
rez: TModalResult;
begin
rez:= MessageDlg("Перед вами пример использования функции MessageDlg?", mtError, , 0); // выводим сообщение об ошибке с кнопками OK и NO

end;


Рисунок. Диалоговое окно при использовании функции MessageDlg

Функция MessageDlgPos
Функция MessageDlgPos(const Msg: String; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer) : Word отличается от функции MessageDlg наличием параметров Х и Y, управляющих положением окна на экране.
Давайте немного изменим предыдущий пример и получим:

200?"200px":""+(this.scrollHeight+5)+"px");">procedure TForm1.MessageDlgPosButtonClick(Sender: TObject);
var
rez: TModalResult;
begin
rez:= MessageDlgPos("Перед вами пример использования функции MessageDlgPos?", mtConfirmation, , 0, 0, 0); // диалоговое окно выводится с координатfvb X=0 и Y=0
if rez = mrOk then ShowMessage("Вы согласились"); // если нажали ОК, то появляется сообщение о том что мы согласились
if rez = mrNo then ShowMessage("Вы не согласились"); // если нажали NO, то появляется сообщение о том что мы не согласились
end;


Рисунок. Диалоговое окно при использовании функции MessageDlgPos

Функция InputBox
Функция InputBox(const ACaption, APrompt, ADefault: String): String отображает диалоговое окно для ввода строки текста. Окно выводится в центре экрана и содержит поле ввода с надписью, а также кнопки ОК и Cancel .
Параметр ACaption задает заголовок окна, а параметр APrompt содержит поясняющий текст к полю ввода. Параметр ADefault определяет строку, возвращаемую функцией при отказе пользователя от ввода информации (нажатие кнопки Cancel или клавиши Esc).
Ниже приведен пример использования функции InputBox :

200?"200px":""+(this.scrollHeight+5)+"px");">procedure TForm1.InputBoxButtonClick(Sender: TObject);
var
pas: string;
begin
pas:= InputBox("Авторизация", "Введите пароль", "********"); // Выводим Диалоговое окно, которое запрашивает пароль
if pas = "123" then
ShowMessage("Пароль принят");
if pas <> "123" then
ShowMessage("Пароль не правильный");
end;


Рисунок. Пример использования функции InputBox

Функция InputQuery
Функция InputQuery (const ACaption, APrompt: String; var Value: String): Boolean отличается от функции InputBox тем, что вместо третьего параметра - строки по умолчанию - используется параметр Value, который в случае подтверждения ввода содержит введенную пользователем строку.
В качестве результата функция возвращает логическое значение, позволяющее определить, каким образом завершен диалог. Если нажата кнопка ОК , то функция возвращает значение True , если нажата кнопка Cancel или клавиша Esc - значение False .
В нижеприведенном примере показано использование функции InputQuery :

200?"200px":""+(this.scrollHeight+5)+"px");">procedure TForm1.InputQueryButtonClick(Sender: TObject);
var
name: string;
begin
name:= "Введите имя";
InputQuery("Пользователь", "Введите фамилию", name); // Выводим диалоговое окно в котором нас просят ввести Имя
ShowMessage("Вы ввели "+name); // Выводим сообщение с тем именем которое мы ввели
end;

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

Для того чтобы получить возможность скачать исходник Delphi к этому уроку, необходимо посетить сайт рекламодателя. После этого, появится ссылка на исходник Delphi к уроку Диалоговые окна в Delphi. ShowMessage, MessageDlg, MessageDlgPos, InputBox и InputQuery
Нажмите на эту ссылку

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

Процедура , функции и отображают окно (панель) вывода сообщений, а функции и InputQuery - окно (панель) для ввода информации.

Процедура ShowMessage

Процедура (const Msg: String) отображает окно сообщения с кнопко ОК. Заголовок содержит название исполняемого файла приложения, а строка Msg выводится как текст сообщения.

Функция MessageDlg

Функция (const Msg: String; AType: TMsgDlgType; AButtons: TMsgDlgButtons; Helpctx: Longint) : word отображает окно сообщения в центре экрана и позволяет получить ответ пользователя. Параметр Msg содержит отображаемое сообщение.

Окно сообщения может относиться к различным типам и наряду с сообщением содержать картинки. Тип окна сообщения определяется параметром АТуре , который может принимать следующие значения:

  • mtWarning (окно содержит черный восклицательный знак в желтом треугольнике и заголовок Warning);
  • mtError (окно содержит белый косой крест в красном круге и заголовок Error);
  • mtInformation (окно содержит синюю букву «i» в белом круге и заголовок Information);
  • mtConfirmation (окно содержит синий знак «?» в белом круге и заголовок Confirmation);
  • mtCustom (окно не содержит картинки, в заголовке выводится название исполняемого файла приложения).

Параметр AButtons задает набор кнопок окна и может принимать любые комбинации следующих значений:

  • mbYes (кнопка Yes);
  • mbAbort (кнопка Abort);
  • mbNo (кнопка No);
  • mbRetry (кнопка Retry);
  • mbOk (кнопка OK);
  • mbIgnore (кнопка Ignore);
  • mbCancel (кнопка Cancel);
  • mbAll (кнопка All);
  • mbHelp (кнопка Help);

Для значения параметра AButtons имеются две константы - mbYesNoCancel и mbOKCancel , задающие предопределенные наборы кнопок:

  • mbYesNoCancel = ;
  • mbOKCancel =

При нажатии любой из указанных кнопок (кроме кнопки Help) диалоговое окно закрывается, а результат (свойство ModalResult) возвращается функцией MessageDlg.

Параметр HelpCtx определяет контекст (тему) справки, которая появляется во время отображения диалогового окна при нажатии пользователем клавиши . Обычно! значение этого параметра равно нулю.

Пример использования функции MessageDlg:

    procedure TForm1. Button1Click (Sender: TObject ) ;

    var rez : TModalResult;

    begin

    if Length (DateEdit1. Text ) <> 10 then

    begin

    rez: = ("Не правильная дата" + #10 #13 + "Исправить автоматически?" , mtError, [ mbOk, mbNo] , 0) ;

    if rez = mrOk then DateEdit1. Text : = DateToStr (Date ) ;

    if rez = mrNo then DateEdit1. SetFocus ;

    end ;

    end ;

При нажатии кнопки Button1 производится простейшая проверка даты. Код даты вводится в поле редактирования DateEdit1 , размещенное в форме. Если длина даты меньше допустимой, выдается предупреждение с запросом на автоматическую коррекцию (см. скриншот). При утвердительном ответе пользователя в поле даты записывается текущая дата, при отрицательном - фокус передается полю ввода даты.

Функция MessageDlgPos

Функция MessageDlgPos (const Msg: String; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer) : Word отличается от функции MessageDlg наличием параметров Х и Y, управляющих положением окна на экране.

Функция InputBox

Функция InputBox (const ACaption, APrompt, ADefault: String): String отображает диалоговое окно для ввода строки текста. Окно выводится в центре экрана и содержит поле ввода с надписью, а также кнопки ОК и Cancel.

Параметр ACaption задает заголовок окна, а параметр APrompt содержит поясняющий текст к полю ввода. Параметр ADefault определяет строку, возвращаемую функцией при отказе пользователя от ввода информации (нажатие кнопки Cancel или клавиши ).

Пример использования функции InputBox:

Приведенная процедура отображает окно запроса на ввод фамилии пользователя (см. скриншот).

По умолчанию предлагается Иванов.

Функция InputQuery

Функция InputQuery (const ACaption, APrompt: String; var Value: String): Boolean отличается от функции InputBox тем, что вместо третьего параметра- строки по умолчанию- используется параметр Value , который в случае подтверждения ввода содержит введенную пользователем строку.

В качестве результата функция возвращает логическое значение, позволяющее определить, каким образом завершен диалог. Если нажата кнопка ОК, то функция возвращает значение True, если нажата кнопка Cancel или клавиша - значение False.

В вышеуказанной процедуре с помощью функции InputQuery выводится окно запроса, аналогичное приведенному ранее. Возвращаемый функцией InputQuery результат не анализируется.

Кроме рассмотренных диалоговых окон, в Delphi имеется ряд других специализированных диалоговых окон, например диалоговое окно выбора каталога , вызываемое функцией Select Directory модуля FileCtrl.