PageControl, TabSet, TabbedNotebook, Notebook

Многостраничные панели позволяют экономить пространство окна приложения, размещая на одном и том же месте страницы разного содержания.

Перенесите компонент PageControlна форму. Чтобы задавать и редактировать страницы этого компонента, щелкните на нем правой кнопкой мыши. Во всплывшем меню имеются команды: Новая страница − создать новую страницу, Далее страница − переключиться на следующую страницу, Назад страница − переключиться на предыдущую страницу. Каждая создаваемая страница является объектом типа TTabSheet. Это панель, на которой можно размещать любые управляющие компоненты, окна редактирования и т.п.

Создайте 3-4 страницы, размещая на них компоненты RichEdit, Memo, Panel, GroupBox. Затем выделите одну из страниц и просмотрите ее свойства в Инспекторе Объектов. Страница имеет следующие основные свойства:

 

Name Имя, по которому можно ссылаться на страницу
Caption Надпись, которая появляется на ярлычке закладки
PageIndex Индекс страницы, по которому можно ссылаться на страницу
ImageIndex Индекс изображения, которое может появляться на ярлычке закладки

Общие свойства компонента PageControl таковы:

 

Style Определяет стиль отображения компонента: tsTabs − заклад-ки, tsButtons − кнопки, tsFlatButtons − плоские кнопки
MultiLine Определяет, будут ли закладки размещаться в несколько рядов, если все они не помещаются в один ряд
TabPosition Определяет место расположения ярлычков закладок: tpBottom −внизу, tpLeft − слева, tpRight −справа и tpTop− вверху компонента (значение по умолчанию)
TabHeight и TabWidth Высота и ширина ярлычков закладок в пикселах. Если значе-ния этих параметров заданы равными 0, то размеры ярлыч-ков определяются автоматически по размерам надписей на них
Images Ссылка на компонент ImageList, который содержит список изображений на ярлычках. Свойства ImageIndexстраниц содержат индексы, соответствующие именно этому списку
ScrollOpposite Определяет способ перемещения закладок при размещении их в несколько рядов
ActivePage Имя активной страницы
Pages [int Index] Доступ к странице по индексу (первая страница имеет индекс 0). Свойство только для чтения
PageCount Количество страниц. Свойство только для чтения

В упомянутом выше всплывающем меню есть ряд команд, позволяющих оперировать страницами, создавать их, уничтожать, переключать.

Основные события компонента − OnChanging и OnChange. Первое из них происходит непосредственно перед переключением на другую страницу после щелчка на новой закладке. При этом в обработчик события передается по ссылке параметр AllowChange −разрешение переключения. Если в обработчике задать AllowChange = false, то переключение не произойдет. Событие OnChange происходит сразу после переключения.

Компонент TabControl внешне выглядит так же, как PageControl, и имеет много тех же свойств: Style, MultiLine, TabPosition, TabHeight, TabWidth, Images, ScrollOpposite, те же события OnChanging и OnChange.

Но принципиальное отличие его от PageControl заключается в том, что TabControl не имеет множества панелей (страниц). Компонент представляет собой одну страницу с управляющим элементом типа кнопки со многими положениями. И надо написать соответствующие обработчики событий OnChanging и OnChange, чтобы определить, что именно должно происходить на панели при переключениях закладок пользователем.

У компонента имеется еще одно свойство − MultySelect, позволяющее множественный выбор закладок. Если это свойство установлено в true, то в обработчиках событий надо описать реакцию на такой выбор пользователя.

Число закладок и их надписи определяются свойством Tabsтипа TStrings. В нем можно задать надписи закладок. Число закладок будет равно числу строчек надписей.

Текущее состояние переключателя определяется свойством TabIndex. Его можно установить в процессе проектирования, чтобы определить исходное состояние переключателя. А затем в обработчиках событий OnChanging и OnChange можно читать это свойство, чтобы определить, что именно выбрал пользователь.

Применять компонент TabControl рекомендуется в тех приложениях, в которых нужен многопозиционный переключатель.

Компоненты TabSet, TabbedNotebook и Notebookрассматриватьне будем, так как они могут быть заменены компонентом PageControl и их не рекомендуется использовать в 32-разрядных приложениях.