Справочник по компонентам Delphi. Часть 2
Страница 29. Компонент TTabSet


 

Компонент TTabSet

TObject-”TPersistent->TCoinponent—>TControl-”TWinControl-”
—>TCustornControl->TTabSet
Модуль TABS
Страница Палитры компонентов Additional

Этот компонент представляет собой набор закладок, на каждой из которых написана или нарисована какая-то ключевая информация. Щелчок по закладке означает ее активизацию. Когда два компонента работают в паре, как в примере выше, несложным путем можно связать активизацию одной из закла­док с выбором соответствующей страницы в TNotebook. Впрочем, набор за­кладок применяют и с другими компонентами.

Как бы ни был выровнен TTabSet, закладки появляются таким образом, что они как бы "приклеены" к его верхнему краю. Поэтому этот компонент располагают снизу от TNotebook или другого компонента, отображающего информацию.

 

Строки, содержащие текст, который появится на закладках, описаны свойством:

(Pb) property Tabs: TStrings;

Строки (т. е. закладки) можно добавлять и удалять, все это отобразится в процессе исполнения. В отличие от TNotebook, список Objects свойства Tabs не используется, и программист может привязать к каждой закладке какой-нибудь объект, например, пиктограмму (см. ниже стиль tsOwnerDraw).

Индекс активной (выделенной) в данный момент закладки доступен для чтения и записи через свойство:

(рыproperty Tablndex: Integer;

Отсчет начинается от 0 и заканчивается на Tabs.Count-1. Если ни одна закладка не выделена, Tablndex равен -1.

При выборе закладки мышью генерируется событие OnClick. Если при этом текущий индекс изменился, генерируется также событие:

(Pb) property OnChange: TTabChangeEvent;
TTabChangeEvent = procedure(Sender: TObject; NewTab: Integer;
var AllowChange: Boolean) of object;

Узнав предполагаемый новый индекс (NewTab), изменение можно запретить (установив параметр AllowChange в False).

Сменить текущую закладку можно и из программы, вызвав метод:

procedure SelectNext(Direction: Boolean);

Параметр Direction, равный True, означает увеличение индекса на 1, False — соответствующее уменьшение. При этом набор циклически замкнут — после последней закладки будет выбрана первая (с нулевым индексом) и т. д.

Если описано много закладок, или если у них длинные имена, то все они могут не поместиться вдоль стороны компонента, т. е. нужна их прокрутка. Для этого у края комонента появляются две маленькие кнопки со стрелками, нажав которые мышью во время выполнения, можно вывести в поле зрения любую закладку. Все сказанное действительно, если свойство

(Pb) property AutoScroll: Boolean;

установлено в True. В противном случае доступ к невидимым закладкам нужно осуществлять программно.

Закладки могут появляться не по всей ширине компонента, а на каком-то его участке. Отступы от правого и левого краев задаются при помощи свойств:

(pb) property StartMargin: Integer;
(Pb) property EndMargin: Integer;

По умолчанию оба отступа равны 5 пикселам. Когда видны не все закладки, индекс первой из видимых содержится в свойстве:

property Firstlndex: Integer;

При этом одновременно видно столько закладок, сколько определено в свой­стве:

(Ro) property VisibleTabs: Integer;

Определить индекс закладки по координатам точки можно, вызвав метод

function ItemAtPos(X, Y: Integer): Integer;

а узнать координаты отведенного ей прямоугольника — через вызов метода:

function ItemRect(Item: Integer): TRect;

Какими средствами изображается компонент? Это определяется его стилем:

(Pb) property Style: TTabStyle;

TTabStyle = (tsStandard, tsOwnerDraw) ;

Стиль tsStandard подразумевает вывод на закладке ее названия стандартными средствами. Если программист хочет изобразить на ней нестандартную инфор­мацию, например, пиктограмму или произвольный текст, он должен установить стиль tsOwnerDraw. Для правильного изображения таких закладок нужно пре­дусмотреть обработчики двух событий — OnMeasureTab и OnDrawTab. Первое из них имеет тип:

(Pb) property OnMeasureTab: TMeasureTabEvent;
TMeasureTabEvent = procedure(Sender: TObject; Index: Integer;
var TabWidth: Integer) of object;

В качестве параметра Index передается индекс закладки в наборе. В ответ в параметре Tab Width обработчик должен вернуть потребную ширину для изоб­ражения этой закладки.

При этом высота пользовательских закладок устанавливается посредством свой­ства:

(Pb) property TabHeight: Integer;

Для стандартно изображаемых наборов закладок это свойство игнорируется — каждая закладка имеет постоянную высоту, которая не зависит от высоты самого компонента.

После OnMeasureTab инициируется обработчик следующего события:

(Pb) property OnDrawTab: TDrawTabEvent;

TDr'awTabEvent = procedure (Sender: TObject; TabCanvas: TCanvas; R:

TRect; Index: Integer; Selected: Boolean) of object;

Обработчик позволяет нарисовать на закладке то, что нужно. Для этого он получает параметры:

TabCanvas — канва компонента;

R — доступный для рисования прямоугольник;

Index — индекс закладки;

Selected — определяет, имеет ли эта закладка фокус. У TTabSet есть собственная канва:

(Ro) property Canvas: TCanvas;

Цвета, которыми изображаются текущая закладка, можно установить с помощью свойства:

(Pb) property SelectedColor: TColor;

Цвет всех прочих закладок определяется свойством:

(Wf property UnselectedColor: TColor;

Фон, то есть оставшееся пространство до границ компонента, не принадлежа­щее закладкам, изображается цветом, заданным в свойстве:

(Pb) property BackgroundColor: TColor;

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

(pb) property DitherBackground: Boolean;

которое по умолчаншо установлено в True.

 

 
« Предыдущая статья   Следующая статья »