- Виды размеров
-
Размеры компонента, т.е. его ширина и высота, могут быть заданы следующих видов:
-
По содержимому -
AUTO
-
Фиксированные (в пикселах) -
10px
-
Относительные (в процентах) -
100%
-
- Размер по содержимому
-
Компонент займет столько места, сколько нужно его содержимому.
Примеры:
-
Компонент Label выбирает такой размер по размеру текста.
-
Контейнеры выбирают размер по сумме размеров всех расположенных в контейнере компонентов.
XML<label width=”AUTO”/>
Javalabel.setWidth(Component.AUTO_SIZE);
Компоненты с размером по содержимому будут подстраивать размер во время компоновки экрана и при изменении размера содержимого.
-
- Фиксированный размер
- Относительные размеры
- Особенности контейнеров
-
По умолчанию контейнеры без установленного атрибута expand выделяют для всех вложенных компонентов одинаковое количество места. Исключения: flowBox и htmlBox.
Пример контейнера с одинаковой высотой компонентов по умолчанию:
link:../../../../../../source/gui_vcl/screen_layout_rules_container.xml[role=include]
Компоненты и контейнеры при создании имеют высоту и ширину по содержимому. Некоторые контейнеры имеют другие значения высоты и ширины по умолчанию:
Контейнер Ширина Высота 100%
AUTO
100%
AUTO
100%
AUTO
Корневой элемент компоновки layout является вертикальным контейнером (
VBox
) и имеет 100% ширину и высоту 100%. В режиме диалога высота корневого элемента может бытьAUTO
.Вкладка компонента TabSheet (
tab
) является контейнеромVBox
.Компонент
GroupBox
содержитVBox
илиHBox
в зависимости от значения свойства orientation.Пример контейнера с высотой по содержимому:
link:../../../../../../source/gui_vcl/screen_layout_rules_container_2.xml[role=include]
Пример контейнера с относительными размерами компонентов:
link:../../../../../../source/gui_vcl/screen_layout_rules_container_3.xml[role=include]
Здесь
layout
, так же какvbox
илиhbox
, выделяет равные части всем вложенным компонентам, а дляgroupBox
указана высота 100%. Кроме того,groupBox
имеет 100% ширину по умолчанию, поэтому он занимает все доступное ему пространство.
- Особенности компонентов
-
Для Table и Tree рекомендуется задавать абсолютную или относительную высоту, иначе таблица/дерево может неограниченно вырасти при большом количестве строк/узлов.
Контейнер ScrollBox должен обязательно иметь заданные высоту и ширину (не
AUTO
). ВнутриScrollBox
нельзя использовать 100% размеры в направлении, для которого необходима полоса прокрутки.Ниже приведены примеры правильного использования
ScrollBox
с вертикальной и горизонтальной прокруткой. Если требуются обе полосы прокрутки, компоненты должны иметь и ширину, и высоту (AUTO
или абсолютные значения).
- Опция expand
-
Атрибут expand контейнера позволяет указать, какому из компонентов предоставить максимальное доступное место.
Компоненту, указанному в
expand
, будет выставлен размер 100% в направлении роста контейнера (VBox
— по вертикали,HBox
— по горизонтали). При изменении размера контейнера изменять размер будет именно этот компонент.link:../../../../../../source/gui_vcl/screen_layout_rules_expand.xml[role=include]
expand
работает по направлению роста контейнера, например:link:../../../../../../source/gui_vcl/screen_layout_rules_expand_2.xml[role=include]
В следующем примере используется вспомогательный элемент Label - spacer. Для него применяется
expand
, поэтому он занимает всё оставшееся в контейнере место.link:../../../../../../source/gui_vcl/screen_layout_rules_expand_3.xml[role=include]