В приложениях VCL Forms форма является первичным контейнером для компонентов. Помимо формы, Delphi предлагает несколько других компонентов, которые могут содержать в себе другие компоненты. Такие компоненты называются контейнерными. Стандартными контейнерными компонентами являются TGroupBox и TPanel категории Standard, TScrollBox категории Additional (Дополнительные) и TPageControl категории Win32.
Как правило, группировать компоненты необходимо по двум причинам. Работа с группами компонентов на этапе проектирования будет более продуктивной, поскольку работать с группой компонентов можно как с одним модулем. А во время выполнения группы улучшают качество интерфейса пользователя. Использование некоторых контейнерных компонентов, таких как TGroupBox, позволяет улучшить внешний вид приложения. Например, в диалоговом окне Project Options (Параметры проекта) компонент TGroupBox используется для группирования связанных между собой параметров. Рамки Code generation (Генерация кода). Syntax options (Параметры синтаксиса). Runtime errors (Ошибки времени выполнения) и Debugging (Отладка), видимые в диалоговом окне, являются компонентами TGroupBox, каждый из которых содержит по нескольку флажков (рис. 11.20).
Чтобы добавить компоненты-потомки в контейнерный компонент, лучше всего сначала поместить контейнерный компонент в окно Designer Surface. Когда вы перемещаете компоненты в окно Designer Surface, они добавляются в контейнерный компонент в позицию указателя мыши. Если в окне Designer Surface нет дополнительных контейнерных компонентов, компоненты добавляются прямо на форму. Если ваша форма содержит несколько контейнерных компонентов, то разобраться с ними вам поможет окно Structure (Структура), показанное на рис. 11.21.
Рис. 11.20. Компоненты TGroupBox в диалоговом окне Project Options
Рис. 11.21. Отношения между родителями и потомками на форме
1.
constructor
Create(AOwner: T<a href="http:
//delphicomponent.ru/" title="Component" target="_blank">Component</a>);
1.
procedure
TForml
.
ButtonlClick(Sender: TObject);
begin
2.
Caption :=
'The Owner of Buttonl is '
+ Buttonl
.
Owner
.
Name;
end
;
- Выберите компонент и вырежьте его в буфер обмена с помощью команды меню Edit^Cut (ПравкамВырезать).
- Выберите компонент панели в окне Designer Surface.
- Воспользуйтесь командой меню Edit^Paste (Правка^Вставить), чтобы добавить ранее вырезанную кнопку в панель.
01.
unit
Unit1;
02.
interface
03.
uses
04.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
05.
Dialogs, StdCtrls, ExtCtrls;
06.
type
07.
TForm1 =
class
(TForm)
08.
Panel1: TPanel;
09.
Button1: TButton;
10.
procedure
Button1Click(Sender: TObject);
11.
private
12.
{ Private declarations }
13.
public
14.
{ Public declarations }
15.
end
;
16.
var
Form1: TForm1;
17.
implementation
18.
{$R *.dfm}
19.
procedure
TForm1
.
Button1Click(Sender: TObject);
20.
begin
21.
ShowMessage(
'Owner: '
+ Button1
.
Owner
.
Name);
22.
ShowMessage(
'Parent: '
+ Button1
.
Parent
.
Name);
23.
end
;
24.
end
.
Элементы управления обладают двумя примечательными свойствами, которые позволяют создавать высококачественные профессиональные интерфейсы пользователя, размеры которых можно изменять без ущерба их полезности или простоте использования.
Свойство Align позволяет выравнивать элемент управления в пределах его родительского элемента управления. Если вы выравниваете элемент управления относительно одной из сторон родительского элемента управления, то при изменении размеров родительского элемента управления размеры данного элемента будут изменяться автоматически. Если свойству Align присвоить значение alNone, то элемент управления не будет перемещаться, а также не будет изменять свои размеры при изменении размеров родительского компонента.
Использовать свойство Align удобно при работе с контейнерными элементами управления, которые необходимо растягивать от одной стороны родительского элемента управления в другую. Однако, некоторые элементы управления, например TButton, TCheckBox и им подобные, не имеют свойства Align. Для выравнивания этих элементов управления должно применяться свойство Anchors.
Свойство Anchors представляет набор из четырех значений, которые определяют, каким образом элемент управления закрепляется в родительском элементе управления.
Значением свойства Anchors по умолчанию является [akLeft, akTop). Элементы управления, в которых свойство Anchors имеет это значение, не изменяют своего местоположения или размеров во время выполнения. Например, свойство Anchors можно использовать в тех случаях, когда кнопка должна быть всегда закреплена в правой части формы. Чтобы кнопка оставалась там даже при изменении размеров формы, свойству Anchors кнопки необходимо присвоить значение [akTop, akRight], как показано на рис. 11.25. Чтобы изменить значения свойства, щелкните на значке + слева от свойства, чтобы развернуть список его значений, и выберите значения, которые вам необходимы.
Рис. 11.25. Свойство Anchors