Набор вкладок (TTabControl) в Delphi

Набор вкладок (TTabControl) в DelphiОбратите внимание, что мы ввели четыре названия вкладки, а на рис. 11.23 вид­но только три. Четвертая вкладка не поместилась, поэтому справа от имен автома­тически появились две кнопки для прокрутки названий вкладок.

 

Давайте установим свойство MultiLine в true, что позволит создавать мно­гострочные заголовки вкладок. Результат этого вы можете увидеть на рис.

 

Как видите, кнопки прокрутки исчезли, зато названия выстроены в две строки. Что вам больше подходит—зависит от конкретного предназначения компонента. Ино­гда нужны многострочные вкладки, а иногда они просто мешают. Но если вкладок слишком много и очень много не помещается на экран, то желательно использо­вать многострочный вариант, потому что прокрутка может утомить пользователя.

 

Давайте еще установим свойство HotTrack в true. Это заставит названия вкла­док светиться при наведении на них курсора мыши (вы это увидите, если запустите приложение).

У компонента TabControl есть еще одно интересное свойство— style. Это свойство отвечает за стиль отображения вкладок. Здесь можно выбрать из списка одно из следующих значений:

  • tsTabs — пример таких вкладок можно увидеть на рис. 11.24;
  • tsButtons — пример таких вкладок показан на рис. 11.25;
  • tsFiatButtons — пример таких вкладок показан на рис. 11.26.

Набор вкладок (TTabControl) в Delphi

Набор вкладок (TTabControl) в Delphi

В нашем примере мы не будем менять это свойство и оставим значение по умолчанию.

 

Здесь показаны возможные варианты только для того, чтобы вы знали об их су­ществовании и могли использовать в своих приложениях. В дальнейшем мы будем использовать вкладки стандартного вида.

 

Перед тем как создать реальное приложение, давайте рассмотрим еще три инте­ресных свойства — TabHeight, Tablndex И TabPosition.

  • TabHeight— высота кнопок вкладок. Если здесь указать 0, то будет использо­ваться значение по умолчанию.
  • Tabindex— индекс выделенной в данный момент времени вкладки. Номера вкладок нумеруются как всегда с нуля, поэтому в нашем случае можно выстав­лять значения от 0 до 3. 

Изменяя значение, установленное здесь, вы можете ме­нять выделенную вкладку. Ну а когда приложение запущено, по этому свойству можно определять, какую вкладку выбрал сейчас пользователь.

TabPosition— позиция вкладок. Здесь можно выбрать из списка одно из сле­дующих значений:

  • tpBottom— вкладки должны быть расположены снизу;
  • tpLef t — вкладки должны быть расположены слева;
  • tpRight — вкладки должны быть расположены справа;
    • tpTop — вкладки должны быть расположены сверху. По умолчанию здесь установлено значение tpTop.

Теперь попробуем создать приложение. Попробуйте установить в рабочее поле любой из вкладок какой-нибудь компонент и запустить приложение или просто изменить индекс выделенной вкладки. Если вы сделаете это, то заметите одно не­удобство— компонент не привязывается к какой-нибудь вкладке. Когда вы выби­раете любую вкладку, установленные внутри компоненты всегда остаются види­мыми. Хорошо, когда необходимо, чтобы все вкладки имели один и тот же вид, а если они должны отличаться? Значит, нам самим нужно прятать или показывать компоненты в зависимости от выбранной в данный момент вкладки. Попробуем написать пример, в котором рассмотрим простейший способ избавиться от этого недостатка.

 

Поместите на форму четыре панели и постарайтесь их расположить рядом, при­мерно так, как показано на рис. 11.27. Это нужно, чтобы ни одна и

Набор вкладок (TTabControl) в Delphi

з панелей слу­чайно не попала поверх другой. Все они должны лежать на компоненте 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.

 

Вот таким простым способом можно присваивать различным вкладкам разные компоненты.

 

СОВЕТ. Если нужно, чтобы абсолютно все вкладки были разными, то желательно воспользоваться компонентом TPageControl, который будет рассмотрен ниже. Ком­понент TTabControl удобнее, когда все или некоторые вкладки имеют схожий вид или когда нужно использовать не панели, а что-то экзотическое.

dle

Помоги проекту! Расскажи друзьям об этом сайте: