Russian Belarusian English German Japanese Ukrainian

Rashka.studio - игры и приложения для Android! Заходи, ждём тебя =)

  • Главная
  • Components
  • TabControl, PageControl, TabSet, TabbedNotebook и Notebook - многостраничные панели

TabControl, PageControl, TabSet, TabbedNotebook и Notebook - многостраничные панели

CuBook35

Компонент PageControl

Многостраничные панели позволяют экономить пространство окна приложения, размещая на одном и том же месте страницы разного содержания.
Перенесите компонент PageControl на форму. Чтобы задавать и редактировать страницы этого компонента, надо щелкнуть на нем правой кнопкой мыши. Во всплывшем меню вы можете видеть команды: New Page - создать новую страницу, Next Page - переключиться на следующую страницу, Previous Page - переключиться на предыдущую страницу.
 
Каждая создаваемая вами страница является объектом типа TTabSheet. Это панель, на которой можно размещать любые управляющие компоненты, окна редактирования и т.п. После того, как вы создадите несколько страниц, выделите одну из них, щелкнув ее в середине, и посмотрите ее свойства в Инспекторе Объектов. Страница имеет следующие основные свойства:
Значение Описание
Name Имя, по которому можно ссылаться на страницу.
Caption Надпись, которая появляется на ярлычке закладки.
Pagelndex Индекс страницы, по которому можно ссылаться на страницу.
Imagelndex Индекс изображения, которое может появляться на ярлычке закладки.
Style Определяет стиль отображения компонента: tsTabs - закладки, tsButtons - кнопки, tsFlatButtons - плоские кнопки.
MultiLine Определяет, будут ли закладки размещаться в несколько рядов, если все они не помещаются в один ряд.
TabPosition Определяет место расположения ярлычков закладок: tpBottom - внизу, tpLeft - слева, tpRight - справа и tpTop - вверху компонента (это значение по умолчанию).
TabHeight,
TabWidth
Высота и ширина ярлычков закладок в пикселах. Если значения этих параметров заданы равными 0, то размеры ярлычков определяются автоматически по размерам надписей на них.
Images Ссылка на компонент ImageList, который содержит список изображений на ярлычках. Свойства Imagelndex страниц содержат индексы, соответствующие именно этому списку.
ScrollOpposite Определят способ перемещения закладок при размещении их в несколько рядов.
ActivePage Имя активной страницы.
Pages [int Index] Доступ к странице по индексу (первая страница имеет индекс 0). Свойство только для чтения.
PageCount Количество страниц. Свойство только для чтения.
В компоненте имеется ряд методов, позволяющих оперировать страницами, создавать их, уничтожать, переключать. Основные события компонента OnChanging и OnChange. Первое из них происходит непосредственно перед переключением на другую страницу после щелчка пользователя на новой закладке. При этом в обработчик события передается по ссылке параметр AllowChange - разрешение переключения. Если в обработчике задать AllowChange = false, то переключение не произойдет. Событие OnChange происходит сразу после переключения.
 
Компонент TabControl

Компонент TabControl внешне выглядит так же, как PageControl, и имеет много тех же свойств: Style, MultiLine, TabPosition, TabHeight, TabWidth, Images, ScrollOpposite, те же события OnChanging и OnChange. Но принципиальное отличие его от PageControl заключается в том, что TabControl не имеет множества панелей (страниц). Компонент представляет собой одну страницу с управляющим элементом типа кнопки со многими положениями. И надо написать соответствующие обработчики событий OnChanging и OnChange, чтобы определить, что именно должно происходить на панели при переключениях закладок пользователем. У компонента имеется еще одно свойство - MultySelect, позволяющее множественный выбор закладок. Если это свойство установлено в true, то в обработчиках событий надо описать реакцию на такой выбор пользователя.
 
Число закладок и их надписи определяются свойством Tabs типа TStrings. В нем вы можете задать надписи закладок. Сколько строчек надписей вы укажете, столько будет закладок. Текущее состояние переключателя определяется свойством Tablndex. Вы можете установить его в процессе проектирования, чтобы определить исходное состояние переключателя. А затем в обработчиках событий OnChanging и OnChange можете читать это свойство, чтобы определить, что именно выбрал пользователь.
 
Применять компонент TabControl имеет смысл в тех приложениях, в которых нужен многопозиционный переключатель. Вы можете, конечно, имитировать с помощью TabControl поведение, аналогичное компоненту PageControl. Для этого достаточно, например, расположить в пределах TabControl две закрывающие друг друга панели и в обработчик события OnChange вставить оператор:
if (TabControl1->TabIndex == 0)
Panel2->Visible = false;
else Panel2->Visible = true;
Если Panel2 - верхняя панель, то при выборе первой закладки (Tablndex = 0) она будет делаться невидимой и под ней будет проступать нижняя панель.
Но подобная имитация PageControl не имеет смысла, так как проще использовать сам компонент PageControl. A TabControl надо применять, если требуются какие-то перестроения в рамках одной панели.
 
Компонент TabbedNotebook

Компонент TabbedNotebook является аналогом многостраничной панели PageControl. Только многие одинаковые у этих панелей свойства называются по-разному.
Основное свойство - Pages, определяющее число страниц и надписи закладок.
Свойство ActivePage определяет надпись активной страницы.
Свойство Pagelndex определяет индекс активной страницы (0 - первая страница). Так что узнать, какая страница активна, можно или по значению ActivePage, или по Pagelndex.
В обработчик события OnChange, происходящего при переключении пользователем страницы, передается параметр NewTab, равный индексу новой страницы, и AllowChange - разрешение переключения. Для запрета переключения можно в обработчике задать AllowChange = false.
 
Компонент TabbedNotebook является как бы соединением двух компонентов: пачки панелей (страниц) Notebook и набора закладок TabSet.
 
Компонент TabSet

Компонент TabSet во многом аналогичен 32-разрядному компоненту TabControl. Это многопозиционный управляющий элемент, который сам по себе не имеет никакой панели. Его основное свойство - Tabs типа TStrings. Задавая строки этого свойства вы тем самым определяете число закладок и их надписи.
 
Свойства StartMargin и EndMargin определяют поля расстояния крайних закладок от краев компонента. Сами закладки всегда направлены вниз. Поэтому компонент TabSet надо располагать внизу управляемого им компонента.
Свойство AutoScroll определяет появление кнопок при большом количестве закладок, которые позволяют пользователю прокручивать полосу закладок, как это делается в компонентах PageControl и TabControl при MultiLine = false. Индекс выбранной закладки определяется свойством Tablndex, значение которого можно устанавливать и можно читать в обработчике события OnChange, происходящего при смене пользователем закладки и идентичного такому событию в компоненте TabbedNotebook.
 
Компонент Notebook

Компонент Notebook является пачкой панелей, имена и количество которых определяются свойством Pages, как в компоненте TabbedNotebook. Индекс выбранной страницы определяется свойством Pagelndex. В этом компоненте отсутствует управляющий элемент - закладки. Так что страницы можно переключать какими-то кнопками, переключать их в зависимости от действий пользователя, в зависимости от отображаемых данных и т.п. Компоненты Notebook и TabSet могут быть, конечно, объединены программно в компонент, аналогичный TabbedNotebook. Для этого достаточно в обработчик события OnChange компонента TabSet вставить оператор:
Notebook1->PageIndex = NewTab;
Но подобное использование этих компонентов вряд ли целесообразно, уж лучше использовать непосредственно TabbedNotebook.
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий


Защитный код Обновить