Перестраиваемые панели − компоненты CoolBar и ControlBar

Перестраиваемые панели являются дальнейшим развитием инструментальных панелей. Только в перестраиваемых панелях сами инструментальные панели обычно являются компонентами более сложных образований. Примером перестраиваемой панели может служить панель ИСР C++Builder 6, включающая в себя ряд более мелких панелей быстрых кнопок и палитру компонентов. Пользователь может настраивать их, изменять местоположение панелей и т.п.

Компонент CoolBarпозволяет строить перестраиваемые панели, состоящие из полос (bands). В полосы могут включаться инструментальные панели ToolBar и любые другие оконные компоненты: окна редактирования, панели и т.п. Каждый из этих компонентов автоматически снабжается средствами перемещения его пользователем в пределах окна CoolBar. В полосы могут вставляться и не оконные компоненты, например метки. Но они не будут перемещаемыми.

Задание 7.Изучить перестраиваемую панель CoolBar.

1.Начните новое приложение, сохраните файл модуля и файл проекта под разными именами.

2.Перенесите на форму компонент ImageList1и загрузите в него из каталога Program Files\Common Files\Borland Shared\Images\Buttons следующие файлы изображений под указываемыми индексами: fldropen − 0, filesave − 1, print − 2, monitor − 3, arrow1ur − 4, arrow1r − 5, arrow1d − 6, arrow1l − 7, arrow1u − 8.

3.Поместите на форму компонент CoolBar. В его свойство Images внесите ImageList, в свойство Hintкомпонент CoolBar, а свойство ShowHinttrue.

4.Перенесите на компонент CoolBar панель ToolBar. Ей будет отведена отдельная полоса и она растянется на всю ширину CoolBar.

5.Задайте свойства полосы, на которой разместилась панель ToolBar. Свойства полос задаются редактором полос в окне Правка. Вызвать окно можно тремя способами: из Инспектора Объектов кнопкой с многоточием около свойства Bands, двойным щелчком на компоненте CoolBar или из контекстного меню, выбрав команду Редактор полос…В окне Правка можно перемещаться по полосам, добавлять новые полосы или уничтожать существующие. Пока в окне находится одна полоса: 0 − TCoolBand. Задайте ей свойство TextПанель 1, свойство ImageIndex0.

6.В свойство Images панели ToolBar внесите ImageList1. Поместите на панель четыре кнопки, внося в свойство ImageIndex соответственно значения 0, 1, 2, 3, а в свойство Wrap второй кнопки − true.

7.Перенесите на компонент CoolBar вторую панель ToolBar. Ей будет отведена вторая полоса. Для этой полосы задайте свойство TextПанель 2, свойство ImageIndex4.

8.В свойство Images второй панели ToolBar внесите ImageList. Поместите на панель четыре кнопки, внося в свойство ImageIndex соответственно значения 5, 6, 7, 8.

9.Около каждого компонента, перенесенного на панель CoolBar, слева появляется полоска, за которую компонент можно перемещать курсором мыши. Переместите вторую полосу в верхний ряд правее первой так, чтобы кнопки в первой панели ToolBar расположились в двух рядах. Возможно, для этого придется увеличить высоту полос.

10.Перенесите на компонент CoolBar два окна редактирования Edit. В свойство Text полос панели CoolBar с окнами редактирования впишите соответственно Окно 1, Окно 2.

11.Полосу Окно 2 переместите в один ряд с полосой Окно 1, разместив ее справа от последней.

12.Сохраните все и выполните приложение. Убедитесь, что панель CoolBar можно легко перестраивать и во время выполнения.

Укажем еще несколько свойств полос. Свойство Control определяет размещенный на полосе компонент. Свойство Break определяет, занимает ли полоса весь соответствующий размер контейнера CoolBar, или обрывается. В приведенном выше задании в левых полосах автоматически установится Break = true, а в правых Break = false. Свойства MinHeight и MinWidth определяют минимальную высоту и ширину полосы при перестроениях пользователем полос панели. Свойство FixedSize определяет, фиксирован ли размер данной полосы или он может изменяться пользователем. По умолчанию для всех полос FixedSize = false, т.е. все полосы перестраиваются. Но при желании размеры некоторых полос можно зафиксировать, задав для них FixedSize = true.

Свойство BandMaximize компонента CoolBar определяет действие, которым пользователь может установить максимальный размер полосы, не перетаскивая ее границу: bmNone − такое действие не предусмотрено, bmClick −щелчком мыши, bmDblClick − двойным щелчком. Не рекомендуется действие bmClick, которое приводит к резкому перестроению полос даже при случайном щелчке мыши.

Свойство FixedOrder, если установить его в true, не разрешит пользователю в процессе перемещений полос изменять их последовательность.

Свойство Vertical указывает вертикальное или горизонтальное расположение полос. По умолчанию Vertical = false, что соответствует горизонтальным полосам.

 

Еще большую свободу перестроений дает пользователю панель ControlBar. В ней может широко применяться техника перетаскивания и встраивания Drag&Doc.

Задание 8. Ознакомиться с перестраиваемой панелью ControlBar.

1.Начните новое приложение. Поместите на форму компонент ControlBar и перенесите на него две инструментальных панели ToolBar и два окна редактирования Edit. Обратите внимание на то, что каждый компонент, попадая на ControlBar, получает полосу захвата, свойственную технологии Drag&Doc.

2.На одну панель ToolBar поместите пять кнопок в два ряда, на другую панель ToolBar −восемь кнопок в два ряда,с вертикальным разделителем между шестой и седьмой кнопками. Сохраните все и выполните приложение. Обратите внимание на возможности перестройки панели.

3.У компонентов, размещенных на ControlBar, установите свойство DragMode = dmAutomaticи DragKind = dkDoc. Это означает автоматическое выполнение операций Drag&Doc. Сохраните все и выполните приложение. Сравните возможности перестройки в этом случае и в предыдущем случае.

4.Свойства компонента ControlBar RowSizeи RowSnap определяют процедуру встраивания. Убедитесь в том, что свойство RowSize задает размеры полос, в которые могут встраиваться компоненты, аRowSnap определяет захват полосами встраиваемых компонентов.

5.Убедитесь в том, что свойство AutoDrag определяет, можно (при значении true), или нельзя простым перетаскиванием вынести полосу за пределы ControlBar, а также в том, что при AutoDrag = true можно вынимать из панели отдельные компоненты и они становятся самостоятельными окнами.

 

Примечание. Чтобы компонент вынуть из панели, нужно курсором мыши щелкнуть на его границе (верхней, правой, нижней), после чего компонент окажется в темной рамке и станет готовым к перемещению в любое место экрана.