Шаг 14.
Вкладка Additional. Компонент TControlBar

    На этом шаге мы рассмотрим компонент TControlBar.

    Компонент TControlBar компонует входящие в него панели инструментов.

    Если на компоненте TControlBar разместить объекты типа TToolBar и TCoolBar (вкладка Win32), то для них во время выполнения программы можно вручную изменять положение и размеры, причем автоматически будет учитываться расположение других объектов, т.е. объекты будут стыковаться друг с другом наиболее оптимальным образом.

    Свойства компонента TControlBar.

Таблица 1. Свойства компонента TControlBar
Свойство Описание
Property AutoDrag: Boolean; Разрешает/запрещает компонентам TToolBar покидать границы TControlBar.
Property Picture: TPicture; Содержит изображение, которое, периодически повторяясь, создает фон компонента.
Property RowSize: TRowSize; Задает высоту одного ряда инструментальных панелей. Умалчиваемое значение 25 в точности соответствует высоте одной панели и в этом случае между рядами нет зазора.
Property RowSnap: Boolean; Если содержит True, "причаливаемая" панель будет выравниваться по высоте ряда.

    Для компонента TControlBar определен следующий метод:

procedure StickControls; virtual; 
этот метод устанавливает все дочерние компоненты на их окончательные позиции после "причаливания" или "отчаливания" очередной инструментальной панели. Его нужно перекрыть, если стандартное размещение панелей по каким-либо причинам не устраивает пользователя.

    События компонента TControlBar:

Таблица 2. События компонента TControlBar
Событие Описание
TBandInfoEvent = procedure (Sender: TObject; Control: TControl; var Insets: TRect; var PreferredSize, RowCount: Integer) of object;
Property OnBandInfo: TBandInfoEvent;
Возникает при перемещении панели внутри компонента: Sender - компонент; Control - панель; Insets - зазор между сторонами компонента и панели; Ргеferredsize - предпочтительная ширина панели; RowCount - количество рядов панелей.
TBandMoveEvent = procedure (Sender: TObject; Control: TControl; ARect: TRect) of object;
Property OnBandMove: TBandMoveEvent;
Возникает при перемещении панели "внутри" компонента: Sender - компонент; Control - панель; ARect - прямоугольник для размещения панели.
TBandPaintEvent = procedure (Sender: TObject; Control: TControl; Canvas: TCanvas; var ARect: TRect; var Options: TBandPaintOptions) of object;
Property OnPaint: TNotifyEvent;
Возникает при необходимости прорисовки панели: Sender - компонент; Control - панель; Canvas - канва для прорисовки; ARect - прямоугольник прорисовки; Options - определяет, какая часть панели нуждается в прорисовке. Возникает при необходимости прорисовки компонента.

    Для дополнительного управления компоновкой объектов в управляющей панели (TControlBar) используйте объект типа TToolDockObjeck.

    Приведем пример использования компонента TControlBar.

    Создадим новое приложение с пустой формой и поместим на нее компонент TControlBar, TImageList (вкладка Win32) и TToolBar (вкладка Win32), так как показано на рис.1.


Рис.1.Windows-окно примера при проектировании

    Для компонента ControlBar1 установим следующие свойства: в Align значение alTop, в AutoSize - True, в DragKind - dkDock.

    Помещенные на форме компоненты TImageList необходимо наполнить изображениями. Для того, что бы наполнить компонент TImageList изображениями нужно открыть редактор изображения. Редактор изображения (рис.2.) открывается при двойном щелчке мыши на компоненте или при выборе в его контекстном меню команды ImageListEditor.

    В появившемся окне редактора щелкните на кнопке Add… и выберите любой bmp-файл. Для удаления выбранного изображения щелкните на кнопке Delete.


Рис.2.Окно редактора ImageList

    Компонент ToolBar1 поместим на компонент ControlBar1. Установим в свойство AutoSize компонента ToolBar1 значение True, в Images - ImageList1 и поместим в него столько кнопок, сколько изображений находится в ImageList1. Для вставки кнопки необходимо щелкнуть правой кнопкой мыши на компоненте ToolBar1 и выбрать в контекстном меню команду New Button.

    Компонент ToolBar2 поместим на свободное место формы. Свойству Align придадим значение alNone (по умолчанию стояло свойство alTop, которое автоматически прижимало этот компонент к нижнему краю компонента ControlBar1). Заметим, что компонент ToolBar2 после изменения свойства необходимо мышью перетащить несколько вниз - для того, что бы на этапе прогона программы компонент не прижимался к компоненту ControlBar1. Свяжем компонент ToolBar2 с компонентом ImageList2 (свойство Images) и создадим на нем кнопки (аналогично компоненту ToolBar1).

    Для обоих компонентов поместим в свойство DragKind значение dkDock, в DragMode - dkAutomatic и в AutoSize - True.

    При запуске программы нижняя панель инструментов перетаскивается на компонент ControlBar1 (рис.3.).


Рис.3.Пример использования компонента TControlBar

    Текст этого примера можно взять здесь.

    На следующем шаге мы рассмотрим компонент TApplicationEvents.




Предыдущий шаг Содержание Следующий шаг