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-разрядных приложениях.