Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методическое пособие для самостоятельных работ.doc
Скачиваний:
21
Добавлен:
16.11.2019
Размер:
2.89 Mб
Скачать

3.2.11. TSplitter - компонент для изменения размеров

Компонент TSplitter предназначен для ручного (с помощью мыши) управления размерами контейнеров TPanel1, TGroupBox или подобных им во время прогона программы. Визуально он представляет собой небольшую вертикальную или горизонтальную полосу, располагающуюся между двумя соседними контейнерами или на “свободной” стороне одного их них.

Непременным условием правильной работы компонента является выравнивание контейнера (контейнеров), размерами которого (которых) он управляет, вдоль одной из сторон окна или охватывающего контейнера. Для примера на рис. 3.29 показаны две панели, разделенные компонентом TSpiitter. Нижняя панель имеет Align = alBottom, верхняя в этом случае может иметь выравнивание alBottom или alciient. Между ними помещен TSplitter с выравниванием alBottom.

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

Свойство

Описание

property Beveled: Boolean;

Управляет трехмерным изображением компонента. Если False, компонент виден как узкая полоска фона между разделяемыми им компонентами него

NaturalNumber = 1..High(Integer) ;

Содержит минимальный размер любого из компонентов, которые разделяет TSplitter.

property MinSize: NaturalNumber;

Если выравнивание alLeft или alRight - минимальная ширина компонента слева и справа от TSplitter, если alTop или alBottom -минимальная высота компонента выше или ниже отнего

Для компонента определено событие onMoved, которое вызывается при любом перемещении компонента мышью.

Рис. 3.29. Пример использования компоненты TSplitter

3.2.12. TStaticText - метка для отображения текста

Этот компонент во всем подобен своему “двоюродному брату” TLabel за исключением двух обстоятельств. Во-первых, он порожден от TwinControl и, таким образом, имеет Windows-окно. Это обстоятельство может быть необходимым условием правильного взаимодействия со связанным свойством FocusControl управляющим элементом, если это внешний для Delphi элемент ActiveX. Во-вторых, в его свойстве

type TStaticBorderStyle = (sbsNone, sbsSingle, sbsSunken) ;

property BorderStyle: TStaticBorderStyle;

добавлено значение sbsSunken, которое создает иллюзию вдавленности компонента. Все остальные свойства и методы компонента совпадают со свойствами и методами TLabel.

3.2.13. TControlBar - инструментальная панель

Компонент служит удобным контейнером для размещения инструментальных панелей TTооlBаr. Он активно использует технологию Drag&Dock для управления положением панелей. На рис. 3.30 показан компонент TControlBar с двумя помещенными на него панелями TTооlваг.

Если вы захотите повторить пример, проделайте следующее.

Создайте новое приложение с пустой формой и положите на нее компонент ControlBar.

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

Установите в его свойство Align значение alTip, в AutoSize- True, в DradKind-dkDragMode. Оставьте в свойстве DragMode значение dmManual.

Положите на свободное место формы два компонента ImageList (страница Win 32 палитры компонентов) и наполните каждый из них двумя тремя изображениями.

В появившемся окне редактора (рис. 3.31) нажмите кнопку Add и выберите любой Вмр-файл из каталога Images\Buttons. Файлы в этом каталоге имеют по два изображения, в то время как компонент ImageList способен хранить только одиночные изображения одинакового размера. Поэтому редактор предложит вам разделить два изображения - согласитесь с ним (кнопка Ок). Щелкните по правому изображению в окне редактора (оно предназначено для отображения кнопки в запрещенном состоянии) и нажмите кнопку Delete, чтобы уничтожить его.

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

Поместите на компонент ControlBar1 компонент ToolBar (страница Win32). Компонент ToolBar1, попав на панель ControlBar1.

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

Установите в свойство images компонента TooiBar1 значение ImageList1 и поместите в него столько кнопок, сколько изображений вы подготовили в imageList1. Для вставки кнопки щелкните по TooiBar1 правой кнопкой мыши и выберите опцию NewButton.

Поместите на свободное место формы еще один компонент ToolBar. Он автоматически прижмется к нижнему краю СоntrolBar1.Измените в его свойстве Align значение alTop на а1None и мышью сместите компонент несколько вниз - на этапе прогона программы этот компонент будет “причаливать” к ControlBar1. Свяжите компонент С ImageList2 (свойство Images) и создайте в нем кнопки (см. п. 7).

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

Запустите программу и перетащите нижнюю панель кнопок на ControlBar1.

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

Свойство

Описание

property AutoDrag: Boolean; 

Разрешает/запрещает компонентам ToolBar покидать границы СontrolBar

property Picture: TPicture;

Содержит изображение, которое, периодически повторяясь, создает фон компонента

property RowSize: TRowSize;

Задает высоту одного ряда инструментальных панелей. Умалчиваемое значение 25 в точности соответствует высоте одной панели и в этом случае между рядами нет зазора

property RowSnap: Boolean; 

Если содержит True, “причаливаемая” панель будет выравниваться по высоте ряда

Метод

procedure StickControls; virtual;

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

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

Свойство

Описание

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: TCon-tro,l; Canvas: TCanvas; var ARect: TRect; var Options: TBandPaintOp-tions) of object;

property OnPaint: TNotifyEvent;

Возникает при необходимости прорисовки панели: sender - компонент; Control - панель; Canvas - канва для прорисовки; ARect - прямоугольник прорисовки; Options - определяет, какая часть панели нуждается в прорисовке Возникает при необходимости прорисовки компонента