Обзор компонентов библиотеки C++Builder______________             195

Если Рапе12 — верхняя панель, то при выборе первой закладки (Tablndex = 0)
она будет делаться невидимой и под ней будет проступать нижняя панель.

Но подобная имитация PageControl не имеет смысла, так как проще использо-
вать сам компонент PageControl. A TabControl надо применять, если требуются ка-
кие-то перестроения в рамках одной панели.

Теперь коротко остановимся на компонентах TabSet, TabbedNoteBook и No-

teBook. Эти компоненты расположены на странице библиотеки Win 3.1, предназ-
начены для применения в 16-разрядных приложениях и не рекомендуются для
применения в 32-разрядных приложениях.

Компонент TabbedNoteBook является аналогом многостраничной панели Pa-
geControl. Только многие одинаковые у этих панелей свойства называются по-раз-
ному. Основное свойство — Pages, определяющее число страниц и надписи закла-
док. Свойство ActivePage определяет надпись активной страницы. Свойство Page-
Index определяет индекс активной страницы (0 — первая страница). Так что уз-
нать, какая страница активна, можно или по значению ActivePage, или по Page-
Index.

В обработчик события OnChange, происходящего при переключении пользо-
вателем страницы, передается параметр NewTab, равный индексу новой страни-
цы, и AllowChange — разрешение переключения. Для запрета переключения
можно в обработчике задать AllowChange = false.

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

Компонент NoteBook является пачкой панелей, имена и количество которых
определяются свойством Pages, как в компоненте TabbedNoteBook. Индекс вы-
бранной страницы определяется свойством Pagelndex. В этом компоненте отсутст-
вует управляющий элемент — закладки. Так что страницы можно переключать
какими-то кнопками, переключать их в зависимости от действий пользователя, в
зависимости от отображаемых данных и т.п. Компоненты NoteBook и TabSet мо-
гут быть, конечно, объединены программно в компонент, аналогичный TabbedNo-
teBook. Для этого достаточно в обработчик события OnChange компонента TabSet
вставить оператор

Notebookl->PageIndex = NewTab;

Но подобное использование этих компонентов вряд ли целесообразно: уж луч-
ше использовать непосредственно TabbedNoteBook.