Формы представляют собой стандартные окна Windows, содержащие элементы управления, и являются основой визуального интерфейса программы. Например, если создать новую форму и вставить на нее поле ввода и кнопку, то результат будет выглядеть следующим образом:
В Delphi пользовательские формы всегда наследуются от базового класса TForm и выполняется в виде отдельного модуля, в котором в разделе интерфейса находится описание класса формы, а в разделе реализации методы обработки событий от элементов этой формы. Для приведенного примера формы будет создан модуль с именем Unit1, который будет находится в файле Unit1.pas. Этот модуль будет описывать класс пользовательской формы TFrom1.
Модуль Unit1.pas
UNIT Unit1;
INTERFACE
USES
Windows,Messages, ...;
TYPE
TForm1=CLASS(TForm)
Edit1:TEdit;
Button1:TButton;
PROCEDURE Button1Click(Sender:TObject);
END;
VAR
Form1:TForm1;
IMPLEMENTATION
PROCEDURE TForm1.Button1Click(Sender:TObject);
BEGIN
Close(); { Если нажать на кнопку Button1,
форма будет закрыта }
END;
END.
Класс TForm является базовым для всех пользовательских форм и содержит большое количество свойств, методов и событий. В дальнейшем для всех рассматриваемых элементов интерфейса будем приводить только основные свойства, необходимые для работы с этими элементами. Для форм основные свойства и методы представлены в следующей таблице.
Свойство или метод
| Значение
|
Свойство Name
| Определено для любого визуального элемента (формы, элементов управления и т.д.) и задает его имя, которое будет использоваться в программе для доступа к этому элементу. В вышеприведенном примере созданная форма имеет имя 'Form1'. Из этого имени конструируется имя класса (TForm1), и описывается в разделе интерфейса глобальная переменная (Form1), с помощью которой в дальнейшем производится доступ к форме
|
Свойства Left и Top
| Также для любого визуального объекта. Для формы задают положение (в пикселях) левого верхнего угла окна формы на экране
|
Свойства Width и Height
| Задают соответственно ширину и высоту (в пикселях) окна формы
|
Свойство Caption
| Заголовок окна формы, выводимый на экран
|
Процедура Show
| Показывает форму на экране. Основная форма программы показывается автоматически
|
Процедура Hide
| Скрывает форму, временно убирая ее с экрана
|
Процедура Close
| Закрывает форму. Если закрыть основную форму программы, то ее выполнение будет завершено
|
В программе может быть создано несколько форм. При этом только одна из них будет являться главной (основной). Основная форма программы будет автоматически показана на экране при запуске, остальные формы будут созданы в памяти, но не будут автоматически выведены на экран. Чтобы отобразить их необходимо использовать процедуру Show (например, Form2.Show). Закрытие форм, как и любых окон Windows, может производиться с помощью мыши путем нажатия кнопки с изображением крестика в правом верхнем углу окна формы, с помощью клавиатуры нажатием сочетания клавиш Alt-F4, либо программным способом при помощи вызова процедуры Close. Закрытие окна основной формы (любым из описанных способов) приводит к завершению выполнения программы. Закрытие любой другой формы программы приводит только к скрытию формы с экрана (как при использовании процедуры Hide). Позже ее снова можно отобразить на экране с использованием процедуры Show.
9.2. Элемент управления «Поле ввода»
Элемент управления «Поле ввода» находится на вкладке «Стандартные» («Standard») панели элементов и обозначается пиктограммой
Поля ввода используются для ввода с клавиатуры строковых значений. Если проводить аналогию с рассмотренным для консольных приложений оператором ввода, то использование этого элемента аналогично оператору Readln(S), где S – строковая переменная типа STRING. Однако если в консольных приложениях данные вводились строго в определенном порядке (в порядке вызова соответствующих операторов ввода), то при использовании полей ввода на форме данные в них можно вводить в любом порядке совершенно независимо, а потом производить их обработку, например при нажатии на кнопку.
Полям ввода в Delphi соответствует класс TEdit, который содержит следующие основные свойства:
Свойство
| Значение
|
Name
| Как и для любого визуального элемента, задает имя, которое используется в программе для доступа к этому элементу. Например, в приведенном ранее классе формы TForm1 поле ввода с именем 'Edit1' описано как переменная типа TEdit
|
Left и Top
| Положение левого верхнего угла поля ввода (в пикселях) относительно левого верхнего угла элемента, в который он вставлен (например, формы)
|
Width и Height
| Ширина и высота (в пикселях) поля ввода
|
Text
| Строковое значение, введенное в данное поле
|
Пример использования полей ввода в программе будет приведен ниже.
Значение основных свойств формы, а также элемента управления «Поле ввода» проиллюстрировано на следующем рисунке.
Свойства формы, как и свойства других элементов, задаются на вкладке «Свойства» в панели «Инспектор объектов»:
9.3. Элемент управления «Кнопка»
Элемент управления «Кнопка» также находится на вкладке «Стандартные» панели элементов и обозначается пиктограммой
Пользователь использует кнопки для выполнения определенных действий. Например, после ввода данных, пользователь нажимает на кнопку «Расчет». При этом в программе выполняется процедура, производящая соответствующие расчеты. Кнопки описываются при помощи класса TButton, который кроме свойств содержит также одно важное событие, вызываемое при нажатии на кнопку.
Свойство или событие
| Значение
|
Свойство Name
| Имя элемента в программе
|
Свойства Left и Top
| Положение кнопки
|
Свойства Width и Height
| Ширина и высота кнопки
|
Свойство Caption
| Текст, который будет изображен на кнопке
|
Событие OnClick
| Задает процедуру обработки события, возникающего при нажатии на кнопку
|
События для элементов можно задать на вкладке «События» панели «Инспектор объектов». Процедура обработки события автоматически описывается в классе формы и разделе реализации модуля. В ранее рассмотренном примере в классе TFrom1 нажатие кнопки обрабатывается процедурой
Button1Click.
Процедуры обработки событий, задаются на вкладке «События» в панели «Инспектор объектов»:
Для примера перепишем рассмотренную ранее в классе TForm1 процедуру обработки события нажатия кнопки Button1Click для иллюстрации работы кнопок и полей ввода на примере расчета степени числа e. Значение степени должно будет вводиться в поле Edit1. При нажатии на кнопку Button1 будет производиться расчет и выдача на экран соответствующего сообщения.
В следующей программе используются функции StrToFloat и
FloatToStr для преобразования введенного строкового значения в вещественное число и наоборот, некоторого рассчитанного значения в строку для показа результата. Также используется процедура ShowMessage для вывода на экран сообщения.
Текст программы
PROCEDURE TForm1.Button1Click(Sender:TObject);
VAR
Power,Result:Real;
BEGIN
{ Преобразование введенного в поле Edit1
текста в вещественное число }
Power:=StrToFloat(Edit1.Text);
Result:=Exp(Power); { Расчет результата }
{ Вывод на экран сообщения }
ShowMessage('e^'+FloatToStr(Power)+'='+
FloatToStr(Result));
END;
Если, например, ввести в поле Edit1 значение 1 и нажать на кнопку Button1, то на экран будет выдано следующее сообщение:
Вещественные числа для функции StrToFloat должны задаваться через запятую (а не через точку, как обычно). При попытке преобразовать с помощью функции StrToFloat строку, которая не содержит правильного представления вещественного числа, будет выдано сообщение об ошибке, но выполнение программы продолжится.
9.4. Элемент «Метка»
Метки используются для отображения текстовых надписей на форме. На вкладке «Стандартные» панели элементов метки обозначены пиктограммой
Метки описываются при помощи класса TLabel и имеют следующие основные свойства:
Свойство
| Значение
|
Name
| Имя элемента в программе
|
Left и Top
| Положение надписи
|
Width и Height
| Ширина и высота надписи рассчитываются автоматически в зависимости от заданного текста
|
Caption
| Текст надписи, отображаемый в форме
|
9.5. Элемент «Группа переключателей»
Группы переключателей предназначены для выбора одного из нескольких вариантов действий. Их можно применять вместо экранных меню, которые использовались ранее в консольных приложениях. На вкладке «Стандартные» панели элементов группы переключателей обозначены пиктограммой
Группы переключателей описываются при помощи класса
TRadioGroup, основные свойства которого приведены в следующей таблице:
Свойство
| Значение
|
Name
| Имя элемента в программе
|
Left и Top
| Положение в форме
|
Width и Height
| Ширина и высота
|
Caption
| Заголовок группы, отображаемый на форме
|
Items
| Список строк (класс TStrings), который содержит названия элементов группы, между которыми производится выбор
|
ItemIndex
| Номер выбранного элемента в группе, причем элементы нумеруются с 0. По умолчанию ItemIndex = –1, что обозначает, что никакой элемент не является выбранным
|
Для задания списка вариантов необходимо на вкладке свойств инспектора объектов нажать на кнопку с изображением многоточия, появляющуюся при выборе свойства Items:
Для примера рассмотрим форму, на которую вставлены два компонента: группа переключателей и кнопка. В группе переключателей зададим список из трех вариантов. В результате форма будет иметь следующий вид:
Модуль Unit1.pas
UNIT Unit1;
INTERFACE
USES
Windows,Messages,SysUtils,Classes,Controls, ...;
TYPE
TForm1=CLASS(TForm)
RadioGroup1:TRadioGroup;
Button1:TButton;
PROCEDURE Button1Click(Sender:TObject);
END;
VAR
Form1:TForm1;
IMPLEMENTATION
PROCEDURE TForm1.Button1Click(Sender:TObject);
BEGIN
CASE RadioGroup1.ItemIndex OF
0:ShowMessage('Выбран вариант 1');
1:ShowMessage('Выбран вариант 2');
2:ShowMessage('Выбран вариант 3');
END;
END;
END.
Если в списке «RadioGroup1» выбрать некоторый вариант и нажать кнопку «Button1», будет выдано сообщение о выборе соответствующего варианта.