Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Рабочая тетрадь по ООП.doc
Скачиваний:
6
Добавлен:
09.11.2019
Размер:
320 Кб
Скачать

Лекция 7. Форма. Элементы управления

ФОРМА

Форма – экземпляр класса TForm

Форма – контейнер для всех видов компонентов, добавляемых в программу во время проектирования.

Эта возможность вытекает из принадлежности формы к классу TWinControl (что позволяет форме быть оболочкой вокруг оконного компонента Windows) и к классу TComponent (поэтому форма может быть владельцем компонентов).

Окно – основа Windows-программы, поэтому форма выступает как самый крупный интерфейсный элемент.

Программа начинает работу с создания главного окна (формы) и заканчивается, когда это окно разрушается.

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

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

При добавлении формы в проект, создаются:

модуль формы (unit1.pas), в котором описывается наследник класса TForm,

файл описания формы(unit1.dfm), содержащий описание формы и компонентов, расположенных на ней.

При создании проекта приложение имеет одну форму, которая будет отображена на экране при запуске, - главное окно проекта.

Дополнительные окна можно создать командами File/New/Form среды Delphi.

Форму можно установить главной при помощи команды Project/Options выбором из списка элемента управления Main form.

Различают:

  • модальные формы,

  • немодальные – диалоговые.

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

Для отображения формы в модальном режиме служит метод ShowModal.

Для отображения формы в немодальном режиме служит метод Show.

Для реализации диалоговых окон:

процедура ShowMessage(),

функция MessageDlg(),

функция MessageDlgPos(),

функция InputBox(),

функция InputQuery().

На вкладке Dialogs имеется 11 компонентов, реализующих диалоговые окна (стандартные окна):

открытие, сохранение и печать файлов, выбор шрифта, выбор цвета и др.

СТИЛЬ ФОРМЫ

property FormStyle : TFormStyle;

TFormStyle = (fsNormal, fsMDIChild, fsMDIForm, fsStayOnTop);

fsNormal – обычное окно (интерфейс SDI),

fsMDIForm – главное окно MDI,

fsMDIChild – дочернее окно приложения MDI (многодокументный интерфейс),

fsStayOnTop – окно, остающееся поверх других окон даже в неактивном состоянии.

Интерфейс MDI состоит из родительского окна, которое включает одно или несколько дочерних окон.

Дочерние окна ограничены областью родительского окна и не могут выходить за его пределы.

SDI интерфейс - каждая форма существует в виде отдельного независимого окна.

Одно из окон является главным, однако оно не содержит других окон.

СВОЙСТВА ФОРМЫ

Размеры и положение формы на экране характеризуются свойствами

Left, Top - расположение на экране,

Width, Height – размеры формы,

ClientWidth, ClientHeight – размеры клиентской области формы ( без заголовка, строки меню, рамки).

Position - автоматическое размещение формы:

poDefault – размер и расположение формы подбираются автоматически средой Windows,

poDefaultPosOnly – положение подбирается автоматически, ширина и высота – по значениям свойств Width и Height,

poDefaultSizeOnly – размер формы устанавливается автоматически, местоположение – по значению Left и Top,

poDesigned – размер и положение задаются значениями Left, Top, Width и Height, установленным при разработке приложения,

poScreenCenter – форма размещается в центре экрана, значения задаются Width и Height.

Набор пиктограмм в заголовке окна:

property BorderIcons : TBorderIcons;

biSystemMenu : boolean – форма имеет управляющее меню (щелчок правой кнопки по заголовку формы),

biMimaze : boolean – кнопка Свернуть,

biMaximaze : boolean – кнопка Развернуть,

biHelp : boolean – кнопка Справка. ?

Color - цвет рабочей области формы (список базовых цветов),

Caption - заголовок формы (String[255]),

Icon - значок формы,

Visible : boolean - видимость формы (true),

Enabled : boolean - доступность формы (true).

BorderStyle : обрамление формы,

bsNone – у окна нет ни рамки, ни заголовка,

bsSingle – неизменяемая в размерах рамка для обычного окна (имеет все три кнопки свернуть, развернуть, закрыть),

bsSizeable – изменяемая в размерах рамка для обычного окна (по умолчанию),

bsDialog – неизменяемая в размерах рамка для диалогового окна, нет кнопок сворачивания и развертывания.

bsToolWindow – аналогично bsSingle, но окно имеет уменьшенный заголовок,

Каждая форма может иметь главное и всплывающее меню.

Menu : главное меню, оно может быть у каждой формы и только у формы.

PopupMenu : всплывающее меню.

KeyPreview : boolean – определяет, будет ли форма обрабатывать события клавиатуры, прежде чем их обработают элементы управления формы.

False (по умолчанию) – то клавиатурные события поступают элементу управления.

True – форма обрабатывает события клавиатуры.

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin

//Не забудьте установить KeyPreview = True;

MessageDlg(' Нажата клавиша ' + Key, mtInformation, [mbOK], 0);

end; ( MessageDlg рассмотрим позднее)

СОБЫТИЯ ФОРМЫ

OnCreate - происходит сразу после создания формы.

В обработчике этого события можно

установить начальные значения для свойств формы и ее компонентов,

запросить у Windows необходимые ресурсы, создать служебные объекты

и др. Например:

procedure TForm1.FormCreate(Sender : TObject);

begin

form1.color := clRed;

form1.button1.left := 30;

form1.button2.left := 30;

form1.button3.left := 30;

end;

OnDestroy - событие происходит при разрушении формы.

В обработчике этого события можно

- освободить ресурсы,

разрушить служебные объекты или

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

OnShow - происходит непосредственно перед тем, как форма становится видимой.

Парным для этого события является OnHide.

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

Парным этому событию является OnDeactivate.

Событие OnCloseQuery происходит при попытке закрыть форму.

Попытка может исходить от пользователя, который нажал на кнопку «Закрыть», либо от обработки метода Close.

В обработчик события OnCloseQuery передается по ссылке булевский параметр CanClose, разрешающий или запрещающий закрытие формы.

Например:

поместим на форму кнопку Button и напишем ее обработчик события OnClick :

Close;

Затем напишем обработчик события формы OnCloseQuery:

procedure Form1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

if MessageDlg('Закрыть форму?', mtConfirmation, [mbOk, mbCancel], 0) = mrCancel

then CanClose := False;

end;

В данном случае выбрано Cancel, и параметр CanClose получил значение False, т.е. окно не закроется.

Вид диалогового окна функции MessageDlg

ПАРАМЕТРЫ MessageDlg

ПАРАМЕТРЫ MessageDlg

ЭЛЕМЕНТЫ УПРАВЛЕНИЯ

Элементы управления – потомки TControl – все визуальные компоненты.

Объект класса TControl не является окном Windows, следовательно, не может получить фокус ввода.

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

Caption : TCaption; (String[255];)

либо Text:

Text: TCaption; (например, у Edit)

Получить доступ к этому свойству можно посредством методов:

function GetTextLen : Integer;

function GetTextBuf (Buffer : PChar ; BufSize: Integer): Integer;

procedure SetTextBuf (Buffer : PChar);

где Pchar –нуль терминированная строка языка Си (индексированный от нуля массив ASCII-символов, заканчивающийся нулевым значением #0. Переменные этого типа являются указателями.

Курсор, который будет установлен на компоненте, определен свойством:

Cursor: TCursor; ( -32768..32767);

В Delphi определены стандартные типы курсоров (пример их был).

Положение, размеры и выравнивание элементов.

BoundRect : TRect; - определяет прямоугольник, содержащий координаты верхнего левого и правого нижнего углов компонентов в системе координат клиентской области родительского элемента.

Можно изменить положение и размеры компонента методом:

SetBounds (X, Y, Width, Height : Integer)

К каждой из этих величин есть раздельный доступ во время разработки с помощью свойств:

Left , Top, Width, Height : Integer;

Align : TAlign; - определяет выравнивание компонента относительно границ родителя и может принимать значения:

alNone – выравнивание отсутствует;

alTop, alBotton, alLeft, alRight – выравнивание происходит по соответствующей стороне родителя;

alClient – компонент занимает все пространство клиентской области родителя.

Для временного отключения действия свойства Align предназначены методы:

procedure DisableAlign;

procedure EnableAlign;

Активность и видимость элементов управления.

Enabled : Boolean; - (значение True - элемент активный. False – пассивный, элемент изображается серым.)

Visible: Boolean; - видимость элемента во время исполнения.

Во время разработки все компоненты являются видимыми.

Изменять это свойство непосредственно во время исполнения можно, используя два метода:

procedure Show; {показать}

procedure Hide; {скрыть}

Ярлычки и оперативная подсказка

ShowHint : Boolean; - если свойство установлено в True, то во время задержки курсора над компонентом появляется подсказка с текстом, помещенным в свойстве Hint : String;

Система оперативных подсказок имеет свойства и методы, общие для всех форм приложения.

Все они сосредоточены в Application – глобальном объекте, соответствующем работающему приложению.

Фокус ввода

TWinControl и его потомки управляют фокусом ввода. Для этого предназначены методы:

function Focused : Boolean; – показывает, имеет ли элемент в данный момент фокус ввода.

function CanFocus : Boolean; – возвращает True, если оконный элемент может получить фокус ввода.

procedure SetFocus; – запрашивает у родительской формы получение фокуса ввода.

Case .....

..........

chr(13): Edit2.SetFocus; {–при нажатии Enter в окне Edit1 курсор переходит в Edit2}

...............................

TabStop : Boolean; - показывает, есть ли на данном элементе табулостоп (перемещение при помощи Tab).

Между элементами формы, у которых TabStop установлен в True, можно перемещаться нажатием клавиши Tab.

Очередность перехода определяется в родительском списке табулоскопов при помощи свойства

TabOrder : TTabOrder; ( -1..32767);

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

Привязка к родительским свойствам

Чтобы все визуальные компоненты в приложении имели единый стиль, нужно установить в потомках свойства:

ParentColor : boolean;

ParentCtl3D : boolean;

ParentFont : boolean;

ParentShowHint : boolean;

значение True, тогда он наследует свойства от родителя. Но если само свойство дочернего элемента переустановить явно, то связь теряется.