Для создания панели инструментов в среде Delphi существует компонент ToolBar, расположенный в палитре компонентов на вкладке Win32.
Рисунок 8.50. Компонент ToolBar
Шаг 52. Активизируйте форму и поместите на нее компонент ToolBar. Дайте новому компоненту имя ToolBar (рисунок 8.51).
Рисунок 8.51. Панель инструментов оказалась в области прокрутки
Внимательный читатель, наверное, уже обратил внимание, что компонент ToolBar попал в область прокрутки (внутрь компонента ScrollBox), и поэтому будет прокручиваться вместе с рисунком. Нам нужно вынести компонент ToolBar из области прокрутки и поместить его прямо в форму. Для этого воспользуемся окном Object TreeView.
Шаг 53. Перейдите к окну Object TreeView и найдите в нем компонент ToolBar. Захватите его с помощью мыши и перетащите к элементу PictureForm в этом же окне (рисунок 8.52).
Рисунок 8.52. Буксировка в окне Object TreeView позволяет быстро перенести компонент с одной панели на другую
Теперь компонент ToolBar находится именно там, где нужно (рисунок 8.53):
Рисунок 8.53. Панель инструментов вынесена за пределы области прокрутки
Между прочим, если вы сразу хотите поместить компонент на другой компонент, закрытый от вашего взора, выберите первый компонент в палитре компоненте и щелкните второй компонент в окне Object TreeView (рисунок 8.54):

Рисунок 8.54.
Размещение компонента сразу внутри нужного компонента с
помощью окна Object TreeView
Шаг 54. В окне свойств установите свойство AutoSize в значение True. После этого панель инструментов будет автоматически подгонять свои размеры в зависимости от размеров и количества размещенных на ней компонентов.
Основу для размещения кнопок вы создали и в качестве передышки мы предлагаем вам пробежаться по наиболее важным свойствам компонента ToolBar и поэкспериментировать с их значениями (таблица 8.15).
| Свойство | Описание |
|---|---|
| AutoSize | Если равно значению True, то панель автоматически
изменяет свою высоту в зависимости от размеров
размещенных на ней компонентов. |
| BorderWidth | Величина отступа от границ компонента до
кнопок. |
| ButtonWidth, ButtonHeight | Ширина и высота кнопок на панели инструментов. |
| Customizable | Если равно значению True, то пользователь во время
работы программы имеет возможность управлять
расположением кнопок на панели инструментов. Удерживая
клавишу Shift пользователь может захватить кнопку и
перенести ее на нужное место, а двойным щелчком панели
инструментов (но не ее кнопок!), пользователь может
вызвать специальное окно настройки. |
| DisabledImages | Список значков, отображаемых на недоступных кнопках.
Свойство DisabledImages используется совместно со
свойством ImageIndex компонента
ToolButton. |
| DockSite | Определяет, используется ли панель инструментов для
стыковки других компонентов. |
| EdgeBorders | Вложенные свойства ebLeft, ebTop,
ebRight и ebBottom определяют видимость
соответственно левой, верхней, правой и нижней сторон
рельефной рамки. |
| EdgeInnter | Внутренний скос рельефной рамки: esNone -
скос отсутствует, esLowered - скос внутрь, esRaised - скос наружу. |
| EdgeOuter | Внешний скос рельефной рамки: esNone - скос
отсутствует, esLowered - скос внутрь, esRaised - скос наружу. |
| Flat | Если равно значению True, то все кнопки, находящиеся
на панели инструментов, не имеют рельефных границ.
Рельефные границы появляются при наведении указателя
мыши на кнопку. |
| HideClippedButtons | Если равно значению True, то кнопки, не уместившиеся
на панели целиком, не показываются вообще. |
| HotImages | Список значков, которые отображаются на кнопках при
наведении на них указателя мыши. Свойство
HotImages используется совместно со свойством
ImageIndex компонента ToolButton. |
| Images | Список значков, которые отображаются на кнопках.
Свойство Images используется совместно со
свойством ImageIndex компонента
ToolButton. |
| Indent | Отступ от края панели до первой кнопки. |
| List | Если равно значению True, то надписи на кнопках
отображаются справа от значков. Иначе надписи
отображаются под значками. |
| Menu | Ссылка на компонент MainMenu. Установка значения
этого свойства приводит к тому, что панель инстурментов
выглядит как строка главного меню. |
| ShowCaptions | Определяет, отображаются ли надписи на кнопках. Если
установлено значение False, то на кнопках отображаются
только значки. |
| ShowHint | Разрешает (значение True) или запрещает (значение
False) показ высплывающих подсказок для кнопок панели
инструментов. |
| Transparent | Если равно значению True, то фон панели инструментов
является прозрачным. |
| Wrapable | Включает автоматический перенос невместившихся
кнопок панели инструментов на новую строку. Если равно
значению False, то перенос кнопок регулируется с помощью
свойства Wrap компонента ToolButton. |
| OnAdvancedCustomDraw | Происходит до и после рисования панели инструментов
на экране. |
| OnAdvancedCustomDrawButton | Происходит до и после рисования каждой кнопки панели
инструментов на экране. |
| OnCustomDraw | Происходит при рисовании панели инструментов на
экране. |
| OnCustomDrawButton | Происходит при рисовании каждой кнопки панели
инструментов на экране. |
| OnCustomizeAdded | Происходит, когда пользователь добавляет кнопку на
панель с помощью окна настройки панели
инструментов. |
| OnCustomizeCanDelete | Происходит, когда пользователь пытается убрать
кнопку с помощи окна настройки панели
инструментов. |
| OnCustomizeCanInsert | Происходит, когда пользователь пытается добавить
кнопку с помощи окна настройки панели
инструментов. |
| OnCustomized | Происходит по окончании любого изменения на панели
инструментов. |
| OnCustomizeDelete | Происходит, когда пользователь убирает кнопку с
панели при помощи окна настройки панели
инструментов. |
| OnCustomizeNewButton | Используется для формирования списка кнопок,
доступных для добавления на панель инструментов. В этом
обработчике, как правило, динамически создаются и
возвращаются через параметр Button объекты класса
TToolButton (или производных классов). |
| OnCustomizeReset | Происходит при нажатии пользователем кнопки Reset в
окне настройки панели инструментов. |
| OnCustomizing | Происходит при вызове пользователем окна настройки
панели инструментов и при нажатии кнопки Reset в этом
окне. |
| OnGetSiteInfo | Происходит, когда у компонента запрашивается место
для стыковки. |



