Визуальное программирование
Разработка приложения в среде Delphi
Создание новой программы на Delphi начинается с выбора опции File/New Application. Это означает, что начинается работа над новым приложением для Windows. В этом случае появляется проект Windows-окна программы (см. рис. 1). В окне текста программы представлен минимально необходимый код, обеспечивающий функционирование окна в Windows. Простейшая программа уже готова. Для того чтобы запустить первую программу, нужно нажать клавишу F9. Эта клавиша соответствует команде Run из пункта меню Run главного меню Delphi. При выполнении этой команды программа последовательно проходит три главных этапа своего жизненного цикла – этапы компиляции, компоновки и исполнения. На этапе компиляции осуществляется преобразование подготовленного текста программы в последовательность машинных инструкций, на этапе компоновки к ней подключаются необходимые вспомогательные подпрограммы, а на этапе исполнения готовая программа загружается в оперативную память и ей передается исполнение.
Полученная программа ничего не умеет делать, кроме как реагировать на нажатие стандартных кнопок минимизации, максимизации окна и вывода системного меню. В заголовке полученного окна высветится имя окна – Form1. По умолчанию заголовок окна совпадает с заголовком формы. Для того чтобы закрыть работающее приложение, необходимо нажать стандартную кнопку закрытия окна Windows.
Обратившись к инспектору объектов, можно изменить свойство Caption формы. Caption означает заголовок. Щелкнув мышью по строке Caption окна инспектора объектов, активизируем эту строку свойств и в правой колонке запишем новый заголовок “Моя первая программа на Delphi”. Новый прогон программы создаст окно с заголовком “Моя первая программа на Delphi”. С помощью окна инспектора объектов мы изменили одно из свойств окна программы – его заголовок.
Процесс создания Delphi-программы разбивается на две фазы: фазу конструирования формы и фазу кодирования.
Разместим на форме два компонента из панели Standard: метку и кнопку. Для того чтобы поместить компонент на форму, необходимо выполнить следующие действия:
1. Выбрать страницу, на которой находится нужный компонент.
2. Выбрать компонент, который необходимо разместить в форме, щелкнув по нему мышью.
3. Выполнить щелчок мышью в проектировщике формы в том месте, где требуется данный компонент разместить.
Рис. 8. Размещение компонента Label
Компонент Label (метка) предназначен для размещения различного рода надписей. Компонент Label на панели Standard отражает кнопка . Произведем последовательно два щелчка: по компоненту на панели и по форме. Теперь форма содержит компонент Label (рис. 8). Новый компонент имеет стандартное имя Label1 и надпись на нем повторяет это имя. Изменить это имя можно с помощью строки Caption окна инспектора объектов. Как только вы начнете вводить новую надпись, вид компонента на форме начнет меняться, динамически отражая все изменения, производимые в окне инспектора объектов.
Выделим надпись цветом и сделаем ее шрифт более крупным. Для этого необходимо щелкнуть мышью по свойству Font (шрифт) окна инспектора объектов и открыть в правой части строки диалоговое свойство настройки шрифта. В этом диалоговом окне можно изменить размер, стиль и цвет шрифта. Надпись на компоненте в окне формы соответствующим образом изменит свои свойства.
С помощью обрамляющих черных квадратиков можно изменять размеры компонента. Для этого следует поместить острие указателя мыши над одним из них (в этот момент указатель меняет свою форму на двунаправленную стрелку), затем нажать левую кнопку мыши и, не отпуская ее, буксировать сторону или угол компонента в нужном направлении, после чего отпустить кнопку. Все видимые компоненты имеют свойства Left (левый), Top (нижний), Width (ширина), Height (высота), числовые значения которых определяют положение левого верхнего угла компонента и его размеры в пикселях. При буксировании компонента или изменении его размеров мышью эти значения автоматически меняются. И наоборот – изменение этих свойств в окне инспектора объектов приводит к соответствующему изменению положения и размеров компонента. В Delphi 4 значения Left и Top автоматически появляются в небольшом окне рядом с указателем мыши при буксировке компонента по форме.
Компонент кнопка изображается пиктограммой на странице Standard палитры компонентов и имеет название TButton. Первая устанавливаемая кнопка по умолчанию имеет название Button1 (рис. 9).
Рис. 9. Форма для второй программы на Delphi
При щелчке по кнопке мышью в работающей программе возникает событие OnClick (по щелчку). Чтобы заставить приложение реагировать на нажатие кнопки, нужно написать на языке Object Pascal фрагмент программы, который называется обработчиком события. Обработчик события – фрагмент программы, который выполняется в ответ на определенное изменение в программе или в Windows. Этот фрагмент должен представлять собой последовательность операторов языка Object Pascal, оформленных в виде процедуры. В окне инспектора объектов на странице Events следует найти событие OnClick и дважды щелкнуть мышью по правой части строки. Delphi самостоятельно сделает заготовку для обработчика события OnClick. Активизируется окно кода с заголовком процедуры и операторными скобками:
Procedure TForm1.Button1Click(Sender: TObject);
Begin
End;
Процедура имеет составное имя. Оно состоит из имени класса TForm1 и собственно имени процедуры Button1Click. Процедуры могут иметь параметры.
Класс в Object Pascal – это дальнейшее развитие объектного типа Турбо Паскаля. Написав обработчик события, мы добавляем еще один метод к методам, описанным в стандартных классах.
В тексте процедуры запишем следующий оператор присваивания:
Label1.Caption := ‘Нет, только учусь!’;
Обращение к свойству компонента в программе осуществляется так же, как обращение к полю или к методу объекта с помощью составного имени.
Теперь, если запустить программу, то она будет реагировать на нажатие кнопки. Вместо надписи “Я программирую на Delphi!” появится сообщение “Нет, только учусь!”.
Текст программы в окне кода программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := ‘Нет, только учусь!’;
end;
end.
Каждый компонент принадлежит к строго определенному классу, а все конкретные экземпляры компонентов, вставляемые в форму, получают имя класса с добавленным числовым индексом. По используемому в Delphi соглашению все имена классов начинаются с буквы Т. Таким образом, имя TForm1 означает имя класса, созданного по образцу стандартного класса TForm.
Строка
TForm1 = class(TForm)
определяет новый класс TForm1, который порожден от стандартного класса TForm. Строка
Form1 : TForm1;
создает экземпляр этого класса с именем Form1. Стандартный класс TForm описывает пустое Windows-окно, в то время как класс TForm1 описывает окно с уже вставленными в него компонентами метка и кнопка. Описание этих компонентов содержат строки
Button1: TButton;
Label1: TLabel1;
Компонент Button1 представляет собой экземпляр стандартного класса TButton, а компонент Label1 – экземпляр класса TLabel.
Параметр процедуры Sender принадлежит классу TObject. Он может использоваться для определения источника события. В нашем примере он никак не используется. Параметр Sender имеют все обработчики событий.