Обзор компонентов библиотеки C++Builder_______________________197

ной кнопки задать в качестве свойства Menultem головной раздел меню, то в вы-
падающем списке автоматически будут появляться разделы выпадающего меню.
В примере рис. 3.31 стиль tbsDropDown имеет четвертая слева кнопка. В ней в ка-
честве свойства Menultem задан раздел Опции из меню, рассмотренного в разделе
3.4.1 и представленного на рис. 3.25. При Style == tbsDropDown можно вместо
свойства Menultem задать свойство DropDownMenu, определяющее контекстное
меню (компонент PopupMenu), которое будет отображаться в выпадающем списке.

Значение Style = tbsSeparator приводит к появлению разделителя, позволяю-
щего отделить друг от друга кнопки разных функциональных групп. Значение
Style = tbsDivider приводит к появлению разделителя другого типа — в виде вер-
тикальной линии. Разделитель можно ввести и из контекстного меню ToolBar, вы-
брав команду New Separator.

Свойство кнопки Indeterminate задает ее третье состояние — не нажатая и не
отпущенная. Это свойство можно устанавливать в true во время выполнения, если
в данном режиме кнопка должна быть недоступна. Свойство Marked выделяет
кнопку.

Мы рассмотрели занесение на панель кнопок. Но в инструментальных пане-
лях нередко используются и выпадающие списки. Например, для задания размера
шрифта. Не представляет труда перенести на панель ToolBar такие компоненты,
как ComboBox (это изображено на рис. 3.31), CSpinEdit и др.

Из общих свойств компонента ToolBar следует еще отметить ButtonHeight и
ButtonWidth — высота и ширина кнопок в пикселях, и Wrapable — автоматиче-
ский перенос кнопок в следующий ряд панели, если они не помещаются в преды-
дущем. Такой перенос осуществляется и во время проектирования, и во время вы-
полнения при изменении пользователем размеров панели.

Свойства, определяющие вид панели ToolBar: BorderWidth — ширина бордю-
ра, Edgelnner и EdgeOuter — стиль изображения внутренней и внешней части па-
нели (утопленный или выступающий), EdgeBorders — определяет изображение от-
дельных сторон панели (левой, правой, верхней, нижней).

Мы рассмотрели построение инструментальной панели на основе компонента
ToolBar. Но полоса может быть очень длинной и не помещаться в отведенном ей
месте формы. Примером является палитра компонентов C++Builder. В этих случа-
ях помочь может компонент PageScroller, обеспечивающий прокрутку панели.
Собственно говоря, PageScroller может прокручивать любой компонент, не обяза-
тельно панель ToolBar. В этом отношении он напоминает уже рассмотренный ком-
понент ScrollBox (см. раздел 3.3.6). Но есть и заметные различия между этими
двумя компонентами: PageScroller прокручивает только один компонент и только
в одном направлении — горизонтальном или вертикальном. Да и оформление
управления прокруткой у PageScroller не похоже на полосы прокрутки в Scroll-
Box.

Пример применения компонента PageScroller показан на рис. 3.32. Это тот
же пример, что и на рис. 3.31. В верхней части окна показана та же инструмента-
льная панель, что и на рис. 3.31. А ниже показана идентичная панель, но заклю-
ченная в небольшое окно PageScroller и снабженная кнопкой прокрутки.

Основное свойство компонента PageScroller — Control. Оно указывает компо-
нент, который должен размещаться и прокручиваться в окне PageScroller. Благо-
даря наличию этого свойства вы можете проектировать свою инструментальную
панель, например, ToolBar, не помещая ее заранее в окно PageScroller и не заду-
мываясь о ее размере. А после того, как вы спроектировали панель, можно ввести
на форму компонент PageScroller и установить его свойство Control. В этот мо-
мент ваша инструментальная панель переместится в окно компонента PageScrol-
ler и появится, если необходимо, кнопка прокрутки.