18.6.1. TTabSet - набор закладок
Компонент TTabSet представляет собой набор закладок. В отличие от компонента TTabControl он не может служить контейнером для размещения других компонентов и поэтому обычно работает совместно с каким-либо компонентом-контейнером (чаще всего - с TNotebook).
Свойства компонента:
property AutoScroll: Boolean; |
Разрешает/запрещает появление стрелок прокрутки, если закладки не умещаются целиком в границах компонента |
property BackgroundColor: TColor; |
Определяет цвет фона закладок |
property DitherBackground: Boolean; |
Если содержит True, уменьшается насыщенность цвета BackgroundColor |
property EndMargin: Integer; |
Отступ закладок от правой границы компонента |
property Firstlndex: Integer; |
Содержит индекс самой левой закладки, целиком видимой на экране |
property SelectedColor: TColor; |
Содержит цвет выбранной закладки (обычно совпадает с цветом связанного компонента-контейнера) |
property StartMargin: Integer; TTabStyle = (tsStandard, tsOwnerDraw); |
Отступ закладок от левой границы компонента |
property Style: TTabStyle; |
Определяет способ прорисовки закладок: tsStandard - автоматический; tsOwnerDraw - программный |
property TabHeight: Integer, |
Определяет высоту закладок в пикселях |
property Tablndex: Integer; |
Содержит индекс выбранной закладки (индексация начинается с 0) |
property UnselectedColor: TColor; |
Определяет цвет невыбранных закладок |
property VisibleTabs: Integer; |
Содержит количество закладок, целиком видимых в границах компонента |
Методы компонента: |
|
function ItemAtPos(Pos: TPoint): Integer; |
Возвращает индекс закладки, которой принадлежит точка Pos |
function ItemRect(Item: Integer): TRect; |
Возвращает прямоугольник прорисовки закладки с индексом item |
procedure SelectNext(Direction: Boolean) ; |
Смещает выбор к соседней закладке: Direction - направление смещения (True - вправо) |
Для компонента определены следующие события: |
|
TTabChangEvent = procedure (Sender: TObject; NewTab: Integer; var AllowChange: Boolean) of object; |
Возникает перед сменой выбранной закладки: NewTab - индекс закладки, которая будет выбрана. В параметре AllowChange обработчик должен разрешить или запретить выбор закладки |
property OnChange: TTabChangingEvent; TDrawTabEvent = procedure(Sender: TObject; TabCanvas: TCanvas; R: TRect; Index: Integer; Selected: Boolean) of object; |
Возникает при необходимости прорисовать закладку с индексом index, если она имеет стиль tsOwnerDraw: TabCanvas - канва для прорисовки; Selected - содержит True для выбранной закладки |
property OnDrawTab: TDrawTabEvent; TMeasureTabEvent = procedure(Sender: TObject; Index: Integer; var TabWidth: Integer) of object-property OnMeasureTab: TMeasureTabEvent; |
Возникает перед прорисовкой закладки с индексом index, если она имеет стиль tsOwnerDraw. В параметре TabWidth обработчик должен вернуть ширину закладки |
Как уже говорилось, часто компонент TTabSet связывается с компонентом TNotebook для организации многостраничного блокнота с закладками. В этом случае в обработчике событий OnChange или
OnClick компонента следует предусмотреть изменение текущей страницы блокнота. Например:
procedure TFormI.TabSetlChange(Sender: TObject;
NewTab: Integer;
var AllowChange: Boolean);
begin
AllowChange := True; // Разрешаем смену закладки
Notebookl.Pagelndex := NewTab // Меняем страницу блокнота
end;