194______________________________________________Глава 3

TabHeight     Высота и ширина ярлычков закладок в пикселях. Если значе-
и             ния этих параметров заданы равными 0, то размеры ярлычков
TabWidth     определяются автоматически по размерам надписей на них

Images        Ссылка на компонент ImageList (см. раздел 3.7.3), который со-
держит список изображений на ярлычках. Свойства Imagein-
dex страниц содержат индексы, соответствующие именно этому
списку

ScrollOpposite Определят способ перемещения закладок при размещении их в
несколько рядов (опробуйте экспериментально, как это свойст-
во влияет на поведение компонента)

ActivePage    Имя активной страницы              '

Pages         Доступ к странице по индексу (первая страница имеет индекс
[int Index]     0) . Свойство только для чтения

PageCount     Количество страниц. Свойство только для чтения

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

Рассмотрим теперь компонент TabControl. Внешне этот компонент выглядит
так же, как PageControl, и имеет много тех же свойств: Style, MultiLine, TabPosi-
tion, TabHeight, TabWidth, Images, ScrollOpposite, те же события OnChanging и
OnChange. Но принципиальное отличие его от PageControl заключается в том, что
TabControl не имеет множества панелей (страниц). Компонент представляет собой
одну страницу с управляющим элементом типа кнопки со многими положениями.
И надо написать соответствующие обработчики событий OnChanging и OnChange,
чтобы определить, что именно должно происходить на панели при переключениях
закладок пользователем. У компонента имеется еще одно свойство — MultySelect,
позволяющее множественный выбор закладок. Если это свойство установлено в
true, то в обработчиках событий надо описать реакцию на такой выбор пользовате-
ля.

Число закладок и их надписи определяются свойством Tabs типа TStrings. В
нем вы можете задать надписи закладок. Сколько строчек надписей вы укажете,
столько будет закладок. Текущее состояние переключателя определяется свойст-
вом Tablndex. Вы можете установить его в процессе проектирования, чтобы опреде-
лить исходное состояние переключателя. А затем в обработчиках Событий OnChan-
ging и OnChange можете читать это свойство, чтобы определить, что именно вы-
брал пользователь.

Применять компонент TabControl имеет смысл в тех приложениях, в которых
нужен многопозиционный переключатель. Вы можете, конечно, имитировать с по-
мощью TabControl поведение, аналогичное компоненту PageControl. Для этого до-
статочно, например, расположить в пределах TabControl две закрывающие друг
друга панели и в обработчик события OnChange вставить оператор:

if (TabControll->TabIndex == 0)
Panel2->Visible = false;

else Panel2->Visible = true;