Инструментальные панели − компоненты ToolBar и PageScroller
Инструментальные панели можно создавать, не прибегая к специальным компонентам, например, поместить на форму простейшую панель Panel, разместить на ней быстрые кнопки SpeedButton и написать для кнопок соответствующий код. Но специализированные компоненты дают дополнительные возможности для построения инструментальных панелей.
Для построения различных инструментальных панелей используется компонент ToolBar.
Задание 6. Изучить инструментальную панель ToolBar.
1.Начните новый проект. Сохраните файл модуля и файл проекта. Поместите панель ToolBar на форму. По умолчанию она расположится вверху, поскольку ее свойство Align = alTop. Задав Align = alNone, можно придать панели любую форму и расположить ее в любом месте. Свойства, определяющие вид панели ToolBar: BorderWidth −ширина бордюра, EdgeInner и EdgeOuter −стиль изображения внутренней и внешней части панели (утопленный или выступающий), EdgeBorders − определяет изображение отдельных сторон панели (левой, правой, верхней, нижней).
2.Занесите компоненты − кнопки на панель ToolBar. Это можно сделать обычным способом − переносом их из палитры компонентов. Однако воспользуйтесь более простым вариантом: щелкните на ToolBarправой кнопкой мыши и из всплывшего меню выберите команду Новая кнопка. На форме появится кнопка − объект типа TTollButton. Вид и поведение этой особой кнопки определяется ее свойством Style, которое по умолчанию равно tbsButton − кнопка. В отличие от кнопки SpeedButton, изображение на ней определяется свойством ImageIndex, в котором находится индекс изображения, хранящегося в компоненте ImageList. Указание на этот компонент может задаваться такими свойствами компонента ToolBar, как Images, DisAbledImages(указывает на список изображений кнопок в недоступном состоянии) иHotImages(указывает на список изображений кнопок в моменты, когда над ними перемещается курсор мыши).
Занесите четыре кнопки на панель ToolBar. Загрузите в компонент ImageListфайлы изображений fldropen, filesave, print, tools из каталога Program Files\Common Files\Borland Shared\Images\Buttons для четырех кнопок на панели ToolBar. В свойстве Images панели ToolBar сошлитесь на компонент ImageList.
Сохраните все и выполните приложение. Убедитесь, что кнопки на панелиToolBar работают как кнопки Button.
3.Задайте стиль кнопок Style = tbsCheck. Выполните приложение. Убедитесь, что после щелчка пользователя на кнопке она остается в нажатом состоянии. Повторный щелчок на кнопке возвращает ее в отжатое состояние. Следовательно, поведение кнопок подобно кнопкам SpeedButton. Отметим, что по умолчанию свойство AllowAllUp = false. Установите во всех кнопках AllowAllUp = true. Выполнив приложение, убедитесь, что поведение кнопок не изменилось. Для одной из кнопок задайте Down = trueи снова выполните приложение. Задайте свойство Grouped =trueво всех кнопках и убедитесь, что сейчас кнопки работают как группа, в которой только одна кнопка может находиться в нажатом состоянии. В указанной выше кнопке установите Down = falseи снова выполните приложение.
4.Щелкните на ToolBarправой кнопкой мыши и из всплывшего меню выберите команду Новая кнопка. В появившейся на панели новой кнопке установите Style = tbsSeparator. Так заносится на панель ToolBar горизонтальный разделитель, позволяющий отделить друг от друга кнопки различных функциональных групп. Затем добавьте еще одну кнопку и выполните приложение. Удалите разделитель и добавленную кнопку.
5.Для занесения на панель ToolBar вертикального разделителя в добавляемой кнопке нужно установить Style = tbsDivider. Однако проще ввести вертикальный разделитель из контекстного меню ToolBar, выбрав команду Новый сепаратор. Убедитесь в этом, добавив на панель вертикальный разделитель и пятую кнопку. После выполнения приложения удалите разделитель и пятую кнопку.
6.Свойство кнопки Indeterminateзадает ее третье состояние − не нажатая и не отпущенная. Это свойство можно устанавливать в trueво время выполнения, если в данном режиме кнопка недоступна. Одну из кнопок выделите свойством Marked, задав его равным true. Выполните приложение. Снимите выделение с кнопки.
7.Свойство Wrap, установленное в true, приводит к тому, что после этой кнопки ряд кнопок на панели прерывается, и следующие кнопки размещаются в следующем ряду. Убедитесь в этом, добавив на панель 6-7 кнопок, изменив значение Wrapна true у второй добавляемой кнопки. Выполните приложение. Удалите все добавленные кнопки.
Свойство MenuItemпозволяет задать раздел главного или контекстного меню, который дублируется данной кнопкой. При установке этого свойства, если в соответствующем разделе меню было задано изображение и установлен текст подсказок (свойство Hint), то это же изображение появится на кнопке и тот же текст появится в свойстве Hint кнопки. Передадутся из раздела меню в кнопку также значения свойств Enabled(доступность) и Visible (видимость). Следует отметить, что все это передастся в кнопку только в момент установки свойства MenuItem. Если в процессе дальнейшего проектирования будут изменены соответствующие свойства раздела меню, это не отразится на свойствах кнопки. Нужно стереть значение MenuItem, а потом установить его снова, чтобы зафиксировать в кнопке новые значения свойств раздела меню.
8.Со страницы Стандарт перенесите на форму компонент MainMenu и
сконструируйте меню с подменю следующего вида:
ФАЙЛ ПРАВКА ИНСТРУМЕНТЫ
Открыть Экран
Сохранить Шаблон 1
Печать Шаблон 2
Автосохранение
В свойстве Images компонента MainMenu укажите ImageList. Для разделов Открыть, Сохранить, Печать, ИНСТРУМЕНТЫ в свойстве ImageIndex укажите соответственно 0, 1, 2, 3. Для разделов Открыть, Сохранить, Печать в свойство Hint впишите соответственно открыть текстовый файл, сохранить текстовый файл, печать текстового файла. Все сохраните и выполните приложение.
9.В свойство MenuItem кнопок панели ToolBar внесите соответственно номера разделов Открыть, Сохранить, Печать, ИНСТРУМЕНТЫ, а в свойство ShowHint для первых трех кнопок внесите true. Сохраните все и выполните приложение. Убедитесь, что при нажатии четвертой кнопки в панели ToolBar появляется подменю головного раздела ИНСТРУМЕНТЫ. Сопоставьте и объясните полученные результаты в последних двух случаях.
10.Для четвертой кнопки, соответствующей разделу ИНСТРУМЕНТЫ, установите Style = tbsDropDown. Кнопка приобретет вид выпадающего списка. Выполните приложение и убедитесь, что в выпадающем списке появляются разделы выпадающего меню.
11.При Style = tbsDropDown можно вместо свойства MenuItem задать свойство DropDownMenu, определяющее контекстное меню (компонент PopupMenu), которое будет отображаться в выпадающем списке.
Со страницы Стандарт перенесите на форму компонент PopupMenu и
сконструируйте контекстное меню с разделами копировать, вставить. Добавьте на панель ToolBarпятую кнопку, в ее свойствоDropDownMenuвнесите PopupMenuи задайте для нее Style = tbsDropDown. Выполните приложение. Убедитесь, что при щелчке на пятой кнопке появляется контекстное меню. Удалите пятую кнопку.
12.В инструментальных панелях используются и другие компоненты. В качестве эксперимента поместим на панель компонент ComboBox(со страницы Стандарт) и компонент CSpinEdit(со страницы Примеры). Выполните приложение и убедитесь в его правильной работе.
Из общих свойств компонента ToolBar следует еще отметить ButtonHeight и ButtonWidth− высота и ширина кнопок в пикселах, и Wrapable − автоматический перенос кнопок в следующий ряд панели, если они не помещаются в предыдущем. Такой перенос осуществляется и во время проектирования, и во время выполнения при изменении пользователем размеров панели.
Полоса инструментальной панели может быть очень длинной и не помещаться в отведенном ей месте формы (например палитра компонентов C++Builder). В этих случаях используют компонент PageScroller, обеспечивающий прокрутку панели (может прокручивать любой компонент, но только один и только в одном направлении − горизонтальном или вертикальном).
Основное свойство компонента PageScroller− Control. Оно указывает компонент, который должен размещаться и прокручиваться в окне PageScroller. Продолжим проектирование приложения.
13.Поместите компонент PageScroller на форму. В его свойстве Control установите ToolBar. В этот момент панельToolBarпереместится в окно компонента PageScroller и появится, если необходимо, кнопка прокрутки. Свойство Marginкомпонента PageScroller определяет размер полей в пикселах, которые оставляются между краем окна PageScrollerи прокручиваемым компонентом. По умолчанию эти поля равны нулю и надо задать Margin некоторое положительное значение (например 10), чтобы края прокручиваемого компонента были лучше видны. Выполните приложение и поэкспериментируйте с компонентом PageScroller.