Обратите внимание, что мы ввели четыре названия вкладки, а на рис. 11.23 видно только три. Четвертая вкладка не поместилась, поэтому справа от имен автоматически появились две кнопки для прокрутки названий вкладок.
Давайте установим свойство MultiLine в true, что позволит создавать многострочные заголовки вкладок. Результат этого вы можете увидеть на рис.
Как видите, кнопки прокрутки исчезли, зато названия выстроены в две строки. Что вам больше подходит—зависит от конкретного предназначения компонента. Иногда нужны многострочные вкладки, а иногда они просто мешают. Но если вкладок слишком много и очень много не помещается на экран, то желательно использовать многострочный вариант, потому что прокрутка может утомить пользователя.
Давайте еще установим свойство HotTrack в true. Это заставит названия вкладок светиться при наведении на них курсора мыши (вы это увидите, если запустите приложение).
У компонента TabControl есть еще одно интересное свойство— style. Это свойство отвечает за стиль отображения вкладок. Здесь можно выбрать из списка одно из следующих значений:
- tsTabs — пример таких вкладок можно увидеть на рис. 11.24;
- tsButtons — пример таких вкладок показан на рис. 11.25;
- tsFiatButtons — пример таких вкладок показан на рис. 11.26.
В нашем примере мы не будем менять это свойство и оставим значение по умолчанию.
Здесь показаны возможные варианты только для того, чтобы вы знали об их существовании и могли использовать в своих приложениях. В дальнейшем мы будем использовать вкладки стандартного вида.
Перед тем как создать реальное приложение, давайте рассмотрим еще три интересных свойства — TabHeight, Tablndex И TabPosition.
- TabHeight— высота кнопок вкладок. Если здесь указать 0, то будет использоваться значение по умолчанию.
- Tabindex— индекс выделенной в данный момент времени вкладки. Номера вкладок нумеруются как всегда с нуля, поэтому в нашем случае можно выставлять значения от 0 до 3.
Изменяя значение, установленное здесь, вы можете менять выделенную вкладку. Ну а когда приложение запущено, по этому свойству можно определять, какую вкладку выбрал сейчас пользователь.
TabPosition— позиция вкладок. Здесь можно выбрать из списка одно из следующих значений:
- tpBottom— вкладки должны быть расположены снизу;
- tpLef t — вкладки должны быть расположены слева;
- tpRight — вкладки должны быть расположены справа;
- tpTop — вкладки должны быть расположены сверху. По умолчанию здесь установлено значение tpTop.
Теперь попробуем создать приложение. Попробуйте установить в рабочее поле любой из вкладок какой-нибудь компонент и запустить приложение или просто изменить индекс выделенной вкладки. Если вы сделаете это, то заметите одно неудобство— компонент не привязывается к какой-нибудь вкладке. Когда вы выбираете любую вкладку, установленные внутри компоненты всегда остаются видимыми. Хорошо, когда необходимо, чтобы все вкладки имели один и тот же вид, а если они должны отличаться? Значит, нам самим нужно прятать или показывать компоненты в зависимости от выбранной в данный момент вкладки. Попробуем написать пример, в котором рассмотрим простейший способ избавиться от этого недостатка.
Поместите на форму четыре панели и постарайтесь их расположить рядом, примерно так, как показано на рис. 11.27. Это нужно, чтобы ни одна и
з панелей случайно не попала поверх другой. Все они должны лежать на компоненте optionTab (это TTabControl). Посмотрите на окно Object Tree View (рис. 11.28). В нем показана иерархия компонентов, что и на чем лежит.
Измените у всех панелей свойство BevelOuter на bvLowered, это сделает панели более приятными на вид. И еще, у компонентов Panel2, Panel3 и Panel4 установите свойство visible в true. Видимой должна остаться только первая панель.
Теперь очистите у всех свойство caption и растяните на всю форму. При растягивании компонентов можно поступить несколькими способами.
Сейчас у нас все панели находятся точно друг под другом, и только одна из них будет видима. Давайте поместим на каждую из панелей надпись. Если у вас сейчас наверху находится не первая панель, то щелкните правой кнопкой мыши и выберите из появившегося меню пункт Control | Send to Back. Повторяйте эти действия, пока наверху не окажется первая панель. Установите на эту панель надпись "Здесь можно располагать компоненты для основной настройки".Выбрать каждый компонент в отдельности в окне Object TreeView (или в ниспадающем списке сверху окна объектного инспектора) и установить у него СВОЙСТВО Align В alClient.
Выделить все панели (удерживая клавишу <Shift>, щелкнуть по всем панелям левой кнопкой мыши) и потом у всех сразу выставить свойство Align В alClient.
После этого можете выделить следующую панель и установить на нее любые другие компоненты. Желательно таким образом заполнить все панели, установив на них хотя бы по одному компоненту, чтобы можно было увидеть, как они будут меняться.
Теперь создайте обработчик события onchange для компонента optionTab и в нем напишите содержимое листинга 11.8. Этот обработчик будет вызываться каждый раз, когда пользователь меняет вкладку.
procedure TForm1.OptionsTabChange(Sender: TObj ect);
begin
Panell.Visible:=false;
Panel2.Visible:=false;
Panel3.Visible:=false;
Panel4.Visible:=false;
case OptionsTab.Tablndex of
0: Panel1.Visible:=true;
1: Panel2.Visible:=true;
2: Panel3.Visible:=true;
3: Panel4.Visible:=true;
end;
end;
В самом начале мы делаем невидимыми все панели, а потом проверяем, какая именно вкладка выделена с помощью оператора case, и в зависимости от этого делаем выделенной конкретную панель. Например, если выделена вторая вкладка (в OptionsTab.Tablndex находится 1), ТО ВИДИМОЙ станет Panel2.
Вот таким простым способом можно присваивать различным вкладкам разные компоненты.