Перевод. Оригинал Integrating with Delphi
Теперь, когда мы создали "ленту", настало время добавить ее в наше Delphi-приложение. Вы можете создать новое приложение, используя это руководство, или посмотреть пример приложения TextPad, входящего в состав библиотеки.
Создание нового Delphi-проекта
Чтобы создать новый проект, использующий Windows Ribbon Framework:
- Убедитесь, что проект вашей "ленты" полностью рабочий (соберите проект (F9) и проверьте, как он работает в окне предварительного просмотра (Ctrl+F9)).
- В среде разработки Delphi создайте новый проект VCL Forms Application. Сохраните его в каталог, в который ранее сохранили проект "ленты". В нашем случае, мы сохранили проект "ленты" в каталог "C:\Projects\TextPad\Ribbon", следовательно, проект приложения мы сохраним в "C:\Projects\TextPad".
- Если вы до сих пор не указали среде разработки путь к библиотеке, самое время это сделать. Для этого, используя "Project | Options | Delphi Compiler | Search Path" укажите путь к каталогу, в который вы распаковали загруженный архив с библиотекой.
- Подготовьте ваше приложение к работе с высоким разрешением экрана, чтобы оно выглядело лучше, когда пользователь увеличит разрешение экрана в Windows. В результате текст и изображения не будет размытыми. Для этого:
- Откройте диалог настроек проекта ("Project | Options").
- Выберите раздел Application.
- Отключите "флажок" "Enable runtime themes". Не бойтесь, приложение по-прежнему будет использовать темы оформления Windows.
- Выберите "Project | Add to project...".
- В диалоге открытия файла укажите тип файла "Resource file (*.rc)".
- Укажите файл "UIRibbon.rc" из каталога Lib библиотеки.
- Основная форма приложения должна использовать модули UIRibbon, UIRibbonForm и UIRibbonCommands. Добавьте эти модули в объявление uses модуля формы.
- Замените родительский класс основной формы на TUIRibbonForm.
- В секции implementation добавьте ресурс, который был создан Ribbon Designer. В нашем примере это файл RibbonMarkup.res в подкаталоге Ribbon проекта.
Исходный код основной формы будет выглядеть так:
unit FMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, UIRibbon, UIRibbonForm, UIRibbonCommands; type TFormMain = class(TUIRibbonForm) private { Private declarations } public { Public declarations } end; var FormMain: TFormMain; implementation {$R *.dfm} {$R 'Ribbon\RibbonMarkup.res'} end.
Теперь скомпилируйте и запустите приложение.Если вы все сделали правильно, "лента" будет размещена в верхней части формы:
Благодаря тому, что наша форма наследует от TUIRibbonForm, она сама загрузит "ленту" из файла ресурсов и отобразит ее. TUIRibbonForm имеет четыре виртуальных метода, которые вы, при необходимости, сможете переопределить:
Кроме описанных выше методов форма имеет свойство-объект Ribbon типа TUIRibbon, которое обеспечивает доступ к "ленте". Объект обладает следующими свойствами:
В примере приложения TextPad свойство BackgroundColor используется, чтобы сделать форму немного темнее "ленты":
Для этого мы переопределили метод RibbonLoaded, потому что, как мы знаем, с этого момента "лента" загружена и ее свойства доступны.
Класс TUIRibbon также содержит несколько методов, которые могут быть интересны:
Теперь мы подошли к основной части нашего приложения и научимся тому, как выполнять команды "ленты".
Далее: Выполнение команд
"Ленточная" форма
Благодаря тому, что наша форма наследует от TUIRibbonForm, она сама загрузит "ленту" из файла ресурсов и отобразит ее. TUIRibbonForm имеет четыре виртуальных метода, которые вы, при необходимости, сможете переопределить:
- RibbonResourceName: возвращает имя ресурса "ленты" в файле ресурсов. Если вы использовали Ribbon Designer для проектирования "ленты", то у вас нет необходимости переопределять этот метод. Если вы использовали Microsoft Ribbon Compiler и указали произвольное имя ресурса, то вы должны переопределить метод, чтобы он вернул верное имя ресурса.
- RibbonInstance: дескриптор файла, из которого следует загрузить ресурс "ленты". Если ресурс содержится в исполняемом файле приложения, то вы можете не переопределять этот метод. Однако, если ресурс содержится в динамической библиотеке, то вам необходимо будет вернуть дескриптор этой библиотеки. Убедитесь, что этот дескриптор будет существовать в течение всего времени выполнения программы (библиотека не будет выгружена ранее, чем приложения закончит свою работу).
- RibbonLoaded: метод вызывается, когда "лента" загружена из ресурса. Здесь вы можете выполнить код инициализации, который зависит от "ленты".
- CommandCreated: метод вызывается каждый раз, когда фреймворк создает команду. Вы можете переопределить этот метод для настройки команды или для установки события, которое будет вызываться при выполнении команды. Мы обсудим это в следующем разделе этого руководства.
TUIRibbon
Кроме описанных выше методов форма имеет свойство-объект Ribbon типа TUIRibbon, которое обеспечивает доступ к "ленте". Объект обладает следующими свойствами:
- Available: доступен ли фреймворк в текущей системе. Если нет (приложение запущено в старой версии Windows), то вы должны обеспечить альтернативный пользовательский интерфейс.
- Height: текущая высота "ленты". Вы можете использовать это свойство для размещения других элементов управления на форме. Однако мы советуем вам просто поместить панель (TPanel) на форму и присвоить свойству Align панели значение alClient. После чего разместите элементы управления на этой панели.
- Visible: видна ли "лента" на форме. Вы можете скрыть "ленту", присвоив этому свойству значение False.
- Minimized: свернута ли "лента". Если "лента" свернута, то на ней отображаются только заголовки вкладок. Пользователь также может свернуть "ленту" двойным кликом по вкладке.
- QuickAccessToolbarPosition: расположение панели быстрого доступа (над или под "лентой").
- BackgroundColor: цвет "ленты". Вы можете использовать это свойство, чтобы указать другую цветовую схему.
- HighlightColor: цвет подсветки кнопок, над которыми в текущий момент находится указатель "мыши".
- TextColor: цвет текста на "ленте".
- BackgroundHsbColor, HighlightHsbColor, TextHsbColor: аналогичны предыдущим трем свойствам, но позволяют указывать цвета в формате HSB (оттенок, насыщенность, яркость).
- Framework: указатель на низкоуровневый интерфейс IUIFramework для быстрого доступа к Ribbon API. Чаще всего вам это свойство не важно, если вы используете библиотеку классов Delphi Ribbon.
В примере приложения TextPad свойство BackgroundColor используется, чтобы сделать форму немного темнее "ленты":
procedure TFormMain.RibbonLoaded; begin inherited; Color := ColorAdjustLuma(Ribbon.BackgroundColor, -25, False); end;
Для этого мы переопределили метод RibbonLoaded, потому что, как мы знаем, с этого момента "лента" загружена и ее свойства доступны.
Класс TUIRibbon также содержит несколько методов, которые могут быть интересны:
- Load: загружает "ленту" из ресурса. Вам не нужно вызывать этот метод, если форма приложения наследует от TUIRibbonForm.
- ShowContextPopup: показать контекстное окно, которое вы определили для "ленты". Вы должны передать идентификатор команды, соответствующей этому окну, и, если вы хотите, чтобы окно появилось не рядом с указателем "мыши", координаты контекстного окна.
- SetApplicationModes: как уже говорилось ранее, фреймворк позволяет указать до 32 режимов приложения. Передайте в метод массив целочисленных значений, чтобы включить эти режимы. Например, чтобы перевести наш пример в обычный режим и показать вкладки Home (Главная) и View (Вид), вы должны выполнить вызов SetApplicationModes([0]). Чтобы показать вкладку Print preview (Предварительный просмотр), нужно вызвать SetApplicationModes([1]). Если же по каким-то причинам вы захотите показать все три вкладки, выполните вызов SetApplicationModes([0,1]).
- SaveSettings: метод позволяет сохранить пользовательские настройки отображения "ленты" (состояние "ленты" (свернута или скрыта), положение панели быстрого доступа и элементы, доступные в ней) в поток или файл.
- LoadSettings: метод позволяет загрузить ранее сохраненные пользовательские настройки отображения "ленты".
Теперь мы подошли к основной части нашего приложения и научимся тому, как выполнять команды "ленты".
Далее: Выполнение команд
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.