Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РАБ_C++BUILDER.doc
Скачиваний:
100
Добавлен:
02.06.2015
Размер:
7.07 Mб
Скачать

Перестраиваемые панели − компоненты 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 можно вынимать из панели отдельные компоненты и они становятся самостоятельными окнами.

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