Перестраиваемые панели − компоненты 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, а свойство ShowHint − true.
4.Перенесите на компонент CoolBar панель ToolBar. Ей будет отведена отдельная полоса и она растянется на всю ширину CoolBar.
5.Задайте свойства полосы, на которой разместилась панель ToolBar. Свойства полос задаются редактором полос в окне Правка. Вызвать окно можно тремя способами: из Инспектора Объектов кнопкой с многоточием около свойства Bands, двойным щелчком на компоненте CoolBar или из контекстного меню, выбрав команду Редактор полос…В окне Правка можно перемещаться по полосам, добавлять новые полосы или уничтожать существующие. Пока в окне находится одна полоса: 0 − TCoolBand. Задайте ей свойство Text − Панель 1, свойство ImageIndex − 0.
6.В свойство Images панели ToolBar внесите ImageList1. Поместите на панель четыре кнопки, внося в свойство ImageIndex соответственно значения 0, 1, 2, 3, а в свойство Wrap второй кнопки − true.
7.Перенесите на компонент CoolBar вторую панель ToolBar. Ей будет отведена вторая полоса. Для этой полосы задайте свойство Text − Панель 2, свойство ImageIndex − 4.
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 можно вынимать из панели отдельные компоненты и они становятся самостоятельными окнами.
Примечание. Чтобы компонент вынуть из панели, нужно курсором мыши щелкнуть на его границе (верхней, правой, нижней), после чего компонент окажется в темной рамке и станет готовым к перемещению в любое место экрана.