На этом шаге мы рассмотрим компонент TSpeedBar.
Компонент TSpeedbar предназначен для размещения в ваших формах настраиваемых пользователем панелей инструментов. При работе с VCL вы обычно создаете инструментальные панели, пользуясь компонентами TPanel и TSpeedButton. Компонент TSpeedbar объединяет в себя панель и набор кнопок, который вы можете задать в режиме дизайна формы. Работа по созданию панели инструментов в форме аналогична работе по созданию полосы меню. Редактор компонента TSpeedbar позволяет вам добавлять и удалять кнопки из компонента, группировать их в секции (категории) и изменять набор видимых кнопок путем перетаскивания кнопок мышкой из окна редактирования на панель, как это сделано в среде Delphi. При установленных флажках sbAllowDrag и sbAllowResize в свойстве Options пользователь вашего приложения сможет перемещать панель инструментов в окне, размещая ее на различных сторонах окна (аналогично перемещению панели задач (taskbar) в Windows95), и изменять ее размеры.
В соответствии со значениями свойства Options кнопки на панели могут быть прозрачными либо нет, а также "всплывающими", т.е. границы которых отображаются только при перемещении над ними указателя мыши. Вы можете также задать "покрытие" (обои) для панели инструментов (битовое изображение, которое будет накладываться на панель при ее отображении) с помощью свойства Wallpaper. Компонент TSpeedbar имеет метод Customize, позволяющий пользователю динамически менять настройки панели инструментов. Вы можете сохранять настройки Speedbar'а в INI-файле или в системном регистре (для 32-разрядной версии) автоматически, задав значение свойству IniStorage, либо вручную с помощью методов SaveLayout, SaveLayoutReg и RestoreLayout, RestoreLayoutReg.
При создании очередных версий вашего приложения вы можете не захотеть, чтобы при запуске приложения пользователем из INI-файла были восстановлены сохраненные там предыдущей версией параметры. Для этого при подготовке новой версии приложения увеличьте значение свойства Version - установки из INI-файла считываются только если записанный там номер версии SpeedBar'а меньше либо равен текущему.
Свойство | Описание |
---|---|
property Options: TSpeedbarOptions; | Свойство задает режимы работы и отображения кнопок панели инструментов.
Смысл флажков типа TSpeedbarOptions:
|
property Wallpaper: TPicture; | Свойство позволяет задать картинку, которая будет покрывать клиентскую область панели инструментов. Изображение может быть растянуто на всю область (при наличии флажка sbStretchBitmap в свойстве Options), либо будет накладываться на всю видимую область панели каскадно, как "обои". |
procedure Customize(HelpCtx: Longint); | Метод предназначен для настройки панели управления (TSpeedbar) пользователем во время выполнения программы. Вызов метода вызывает диалоговое окно, отображающее список всех доступных кнопок панели инструментов, разделенных по категориям. Пользуясь этим диалогом можно переместить мышкой кнопки из диалога на панель управления или удалить кнопки с панели управления опять же с помощью мыши (drag-and-drop). Вы можете воспользоваться методом SaveLayout для сохранения текущих установок компонента TSpeedbar в INI-файле, и методом RestoreLayout для восстановления этих установок из INI-файла. |
procedure SaveLayout(IniFile: TIniFile); | Метод служит для сохранения в INI-файле установок компонентов TRxDBGrid (таких как порядок и ширины столбцов) и TSpeedbar (набор и расположение кнопок на панели инструментов), для последующего восстановления с помошью метода RestoreLayout. Данные о текущих установках компонента записываются в специфицированный INI-файл в секцию с именем, возвращаемым функцией GetDefaultSection. Если вы задали значение свойству IniStorage, то настройки могут сохраняться и восстанавливаться автоматически. |
procedure RestoreLayout(IniFile: TIniFile); | Метод служит для восстановления из INI-файла установок компонентов TRxDBGrid (таких как порядок и ширины столбцов) и TSpeedbar (набор и расположение кнопок на панели инструментов), если они были сохранены там с помошью метода SaveLayout. Текущие установки не изменяются, если специфицированный INI-файл не содержит данных об установках компонента. Если вы задали значение свойству IniStorage, то настройки могут сохраняться и восстанавливаться автоматически. |
property Version: Integer; | Свойство Version служит для предотвращения считывания из INI-файла (или Windows registry) конфигурации панели инструментов (с помощью ее методов RestoreLayout или RestoreLayoutReg) при изменении разработчиком приложения набора кнопок в панели. Если вы не изменяете значение свойства Version, то метод RestoreLayout (RestoreLayoutReg) считывает настройки из INI-файла или registry и восстанавливает состояние панели инструментов вне зависимости от изменений в форме, произведенных разработчиком в очередной версии приложения. Вы можете при изменении версий вашего приложения наращивать значение свойства Version - метод RestoreLayout (RestoreLayoutReg) не будет восстанавливать настройки панели инструментов, если считанное им из INI-файла или registry значение свойства Version меньше текущего. |
procedure RestoreLayoutReg(IniFile: TRegIniFile); | Метод полностью аналогичен RestoreLayout, но предназначен для использования с классом TRegIniFile Delphi 2.0 для чтения/записи данных из регистрационной базы данных Windows (Registry). Если вы задали значение свойству IniStorage, то настройки могут сохраняться и восстанавливаться автоматически. |
Рассмотрим пример использования компонента TSpeedBar. Разместим на форме компоненты: TSpeedBar и TButton. С помощью редактора компонента TSpeedBar (рис. 1) настроим панель управления: создадим и добавим на панель несколько кнопок. Кнопки добавляются на панель простым перетаскиванием из редактора и удаляются так же.
Рис.1. Редактор компонента TSpeedBar
Загрузим картинку в свойство Wallpaper компонента TSpeedBar, которая будет фоном нашей панели управления. В свойстве Options параметр sbTransparentBtns установим в значение True, чтобы кнопки на нашей панели были прозрачными. В результате получим следующий вид панели: (рис. 2).
Рис.2. Форма с размещенными компонентами
Далее напишем обработчик события OnClick для кнопки Button1, который будет вызывать окно дизайнера панели управления, при нажатии на нее в процессе выполнения нашего приложения:
procedure TForm1.Button1Click(Sender: TObject); begin Form1.SpeedBar1.Customize(0); end;
Результатом работы нашего приложения будет окно с панелью управления, которую можно настраивать прямо в процессе выполнения программы.
Текст этого примера можно взять здесь.
На следующем шаге мы рассмотрим компонент TRxCalculator.