Шаг 6.
Компоненты библиотеки RX.
Вкладка RX Tools. Компонент TSpeedBar

    На этом шаге мы рассмотрим компонент 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'а меньше либо равен текущему.

Таблица 1. Свойства и методы компонента TSpeedBar
Свойство Описание
property Options: TSpeedbarOptions; Свойство задает режимы работы и отображения кнопок панели инструментов. Смысл флажков типа TSpeedbarOptions:
  • sbAllowDrag - пользователь может перемещать мышью панель инструментов внутри окна-родителя, изменяя ее свойство Align;
  • sbAllowResize - пользователь может изменять с помощью мыши размеры панели управления;
  • sbFlatBtns - панель использует "всплывающие" кнопки, т.е. границы которых отображаются только при перемещении над ними указателя мыши;
  • sbGrayedBtns - имеет смысл при установленном флажке sbFlatBtns; при этом битовые изображения "неактивных" кнопок делаются "серыми" (если картинка в свойстве Glyph содержит 5 изображений, то 5-ое используется для отображения неактивной кнопки, если же меньше, то соответствующая "серая" картинка будет сделана автоматически);
  • sbTransparentBtns - кнопки на панели являются прозрачными, через них, например, можно видеть битовое изображение, заданное свойством Wallpaper панели инструментов;
  • sbStretchBitmap - изображение, заданное свойством Wallpaper, рисуется "растянутым" по всему размеру панели инструментов.
По умолчанию свойство имеет значение [sbAllowDrag, sbGrayedBtns].
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.




Предыдущий шаг Содержание Следующий шаг