Лекция 4.1. Контейнерные компоненты
Контейнерные компоненты предназначены для размещения и объединения в одной структуре различных визуальных компонентов. К основным контейнерным компонентам можно отнести:
· формы – класс TForm;
· фреймы – класс TFrame;
· страницы с вкладками – класс TPageControl;
· панели – класс TPanel;
· панели групп – класс TGroupBox.
Форма
Основным контейнерным компонентом для построения пользовательского интерфейса является форма. Различают два типа форм – модальные и немодальные. Модальные формы не позволяют передавать фокус ввода в другие окна приложения до тех пор, пока модальное окно незакрыто, например, окна диалога. Немодальные окна могут терять фокус ввода, оставаясь при этом открытыми.
Форма является представителем класса TForm. Класс TForm позволяет создавать два типа оконного интерфейса – однодокументальный (SDI – Single Document Interface) и многодокументальный (MDI – Multi Document Interface). В обоих случаях программа содержит одно главное окно, создаваемое и отображаемое после запуска программы. Различия наблюдаются в принципах взаимодействия главного окна с дочерними окнами. В SDI-программах все дочерние окна могут перекрывать главное окно. В MDI-приложениях дочерние окна могут находиться только в клиентской области родительского окна (но могут быть использованы и окна диалога).
Основные опубликованные свойства класса TForm:
· Borderlcons: TBorderIcons - определяет набор кнопок в заголовке формы
· BorderStyle: TBorderStyle - определяет тип границы окна и вид заголовка формы, значения:
ü bsNone – нет границы;
ü bsSingle – неизменяемые размеры формы;
ü bsSizeable – обычная форма;
ü bsDialog – окно диалога;
ü bsToolWindow – окно панели инструментов с фиксированным размером;
ü bsSizeToolWindow – окно панели инструментов с изменяющимися размерами
· BorderWidth: Integer - ширина рамки формы;
· Caption: TCaption - заголовок формы;
· Color: TColor - цвет фона формы;
· Cursor: TCursor - вид курсора в положении над формой;
· FormStyle: TFormStyle - стиль окна, возможные значения:
ü fsNormal – обычное окно (SDI);
ü fsMDIChild – дочерняя MDI-форма;
ü fsMDIForm – главная MDI-форма;
ü fsStayOnTop – форма поверх других окон.
· Icon: TIcon - пиктограмма формы;
· Menu: TMainMenu - главное меню формы;
· PopupMenu: TPopupMenu - контекстное меню формы;
· WindowState: TWindowState - состояние окна:
ü wsNormal – обычное состояние;
ü wsMinimized – свернуто;
ü wsMaximized – во весь экран.
Свойства доступные только во время выполнения приложения:
· Active: Boolean - определяет активность формы;
· ActiveMDIChild: TForm - указывает на активную дочернюю форму;
· Canvas: TCanvas - поверхность рисования;
· ModalResult: TModalResult - значение, возвращаемое функцией ShowModal, при закрытии окна;
· MDIChildCount: Integer - количество дочерних окон;
· MDIChildren [i:Integer]: TForm - указывает на i-е дочернее окно.
Основные методы класса TForm:
· procedure Close – вызывает метод CloseQuery и, если он возвращает true, закрывает форму.
· function CloseQuery: Boolean; – позволяет определить, может ли форма быть закрыта.
· procedure FocusControl(Control:TWinControl) – устанавливает фокус ввода на элемент Control.
· function GetFormImage: TBitmap – возвращает растровое изображение формы.
· procedure Print – печатает изображение формы.
· procedure Release – Закрывает форму и освобождает занимаемые ею ресурсы.
· function ShowModal: Integer – отображает форму в модальном режиме.
В классе TForm определен ряд методов-обработчиков событий, которые позволяют задавать реакцию экземпляра класса TForm на определенные действия. Рассмотрим основные из них:
· OnActivate – вызывается при передаче форме фокуса ввода;
· OnClick – вызывается при одиночном щелчке на форме;
· OnDblClick – вызывается при двойном щелчке на форме;
· OnQose – вызывается при закрытии формы;
· OnCloseQuery – вызывается перед закрытием формы (используется для задания параметра, возвращаемого методом CloseQuery);
· OnCreate – вызывается при создании формы;
· OnDeactivate – вызывается при потере формой фокуса ввода;
· OnDestroy – вызывается перед уничтожением формы;
· OnPaint – вызывается при перерисовке формы;
· OnShow – вызывается при отображении формы;
· OnKeyPress – вызывается при нажатии клавиши;
· OnMouseDown – вызывается при нажатии левой кнопки мыши в области формы;
· OnMouseUp – вызывается при отпускании левой кнопки мыши в область формы;
· OnMouseMove – вызывается при движении указателя мыши на форме.
Приведем пример программы, подсчитывающей количество кликов левой кнопки мыши по форме.
1. Создайте главную форму приложения, для этого выберите команду меню File – New – Application.
2. Создйте реакцию приложения на щелчок мыши, для этого перейдите в окне Object Inspector на вкладку Events и дважды щелкните в поле значения события OnClick, в результате станет активным окно редактора кода, в который автоматически будет добавлен заголовок процедуры-обработчика события OnClick:
procedure TForm1.FormClick(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
end;
3. Впишете в процедуру- обработчик следующий код:
Caption:= 'Количество нажатий = ' + IntToStr(i);
Inc(i);
4. В разделе private модуля Unit1 формы опишите переменную
i: Integer;
5. Запустите приложение нажатием клавиши F9 и посмотрите его реакцию на нажатие кнопки мыши, закройте приложение.
Таким образом, вписав всего две строчки кода, вы добились некоторой функциональности приложения.
Фреймы
Фрейм является компонентом класса TFrame. Фреймы подобны формам, однако, в отличие от них, фреймы могут помещаться на формы и другие фреймы. Фрейм используется для объединения визуальных компонентов в одну группу и управления их отображением. Порядок создания фрейма:
1. Создайте фрейм командой File – New – Frame (форма должна быть создана).
2. Перейдите на вкладку палитры компонентов Standard, выберите компонент Frames.
3. Выбранный в списке фрейм помещается на форме как обычный компонент. При этом отображается список всех фреймов, существующих в текущем проекте. Вместе с фреймом будет создан новый модуль, в котором желательно писать весь код реализации фрейма.
Процедура размещения элементов управления на фрейме производится так же, как и на форме. Фреймы обладают примерно теми же свойствами что и формы, но в отличие от последних, содержат намного меньшее свойств, методов и событий. Управление видимостью и доступностью фрейма и его компонентов осуществляется свойством Visible и Enabled, соответственно.
Компоненты классов TPanel и TGroupBox
При разработке интерфейса приложения несколько функционально связанных элементов управления часто объединяются в одну группу.
Обычно для этого используются специальные контейнерные элементы TPanel и TGroupBox. Для сгруппированных элементов свойства контейнера Enable и Visible переносятся и на помещенные в них элементы. При изменении расположения контейнера вовремя разработки все элементы также перемещаются вместе с ним.Компонент TPanel представляет собой прямоугольную область, которая может быть «вдавленной» или «выпуклой» относительно формы, на которой она размещена (это определяют свойства Bevellnner и BevelOuter класса TPanel).
Компонент TGroupBox используется для визуального выделения группы элементов управления. В отличие от панели, может иметь заголовок. Других принципиальных отличий нет.
Вопросы для самоконтроля
1. Для чего необходимы контейнерные компоненты?
2. Какие классы контейнерных компонентов вы знаете?
3. Какие существуют типы форм, чем они отличаются?
4. Какие типы оконных интерфейсов вы знаете?
5. Какие основные свойства класса TForm вам известны?
6. Назовите основные методы класса TForm.
7. Назовите основные события класса TForm.
8. Для чего необходим Frame, как его можно создать?
9. Что представляют собой компоненты классов TPanel и TGroupBox?
Еще по теме Лекция 4.1. Контейнерные компоненты:
- Конфедерация и иные формы межгосударственных объединений (союзы, сообщества, содружества, ассоциации)
- Органы законодательной власти: порядок образования, структура, компетенция.
- Государство и церковь.