Ribbon Controls шаг за шагом. Шаг 1 - визуальная разработка интерфейса.Источник: webdelphi
Источник: webdelphi Начиная с RAD Studio 2009 в составе VCL Delphi появилась новая вкладка Ribbon Controls. На этой вкладке располагаются компоненты для создания относительно нового интерфейса для приложения, так называемого "ленточного" интерфейса к которому уже давно привыкли пользователи Microsoft Office 2007. Сегодня и мы, как разработчики, начнем процесс мучительного привыкания к новым компонентам на благо пользователей наших приложений. На самом деле процесс освоения работы с новыми компонентами не такой уж и мучительный, если подойти к изучению этого вопроса с самого начала и не торопиться разработать интерфейс один-к-одному как у Office 2007 - за день такие вещи, к сожалению, не делаются. 1. Устройство интерфейса RibbonВ основе Ribbon лежат три вида элементов: вкладка, панель и элемент внутри панели (см. рисунок) Дополнительно, Ribbon может содержать кнопку главного меню и панель быстрого запуска. В главном меню, помимо основных элементов, могут размещаться также ссылки на последние открытые документы, что делает такое меню практически идеальным для пользователей приложений, работающих с различными документами. Панель быстрого запуска может содержать копии любых элементов Ribbon для удобства их использования. Теперь, вооружившись элементарными знаниями об устройстве Ribbon, попробуем построить свой собственный ленточный интерфейс. 2. Первые Ribbon интерфейс - он самый сложныйВсе элементы Ribbon располагаются на странице палитры компонентов Ribbon Controls На первый взгляд, разработчики по жадничали и оставили нам в распоряжение всего пять элементов: Дело в том, что Ribbon в Delphi работает только совместно с компонентом TActionManager со страницы Additional палитры компонентов. И этот компонент берет на себя львиную долю всей работы, в том числе, и работы с событиями элементов. Теперь попробуем создать простенький интерфейс, рассмотрев попутно свойства компонентов Ribbon. 2.1. Работа с TRibbonОткройте Delphi, создайте новое приложение и расположите на форме следующие элементы:
В итоге Вы должны получить примерно следующую картинку: Теперь выберите TRibbon и в свойстве ActionManager укажите наш ActionManager1. У компонента TRibbon определены следующие константы:
Свойства компонента TRibbon:
Теперь, давайте добавим на нашу ленту первую вкладку. Для этого можно:
Теперь на вкладку можно добавлять новые группы. Сделать это можно либо через контекстное меню вкладки, либо, опять же воспользовавшись опциями в Object Inspector"е. Для примера, добавим на вкладку три группы: В любой момент вы можете изменить положение групп на вкладке. Для этого необходимо воспользоваться опцией "Reorder Groups…". Rows : integer - свойство определяет на сколько строк будут занимать элементы панели. По умолчанию свойство имеет значение 3. Теперь попробуем добавить обычную кнопку.
Теперь определим обработчик действия. Пусть при вызове действия открывается главная страница нашего блога. Располагаем на форме компонент TWebBrowser (вкладка Interet палитры компонентов), в редакторе Action Manager"а делаем двойной клик по действию и пишем обработчик: procedure TForm2.OpenStartURLExecute(Sender: TObject); begin WebBrowser1.Navigate('http://webdelphi.ru'); end; Теперь возьмие и перетащите мышкой действие из ActionManager на любую панель Ribbon. В результате должно получиться примерно следующее: По умолчанию новое действие располагается в первой свободной строке (Row) панели. Для того, чтобы новая кнопка выглядела как полагается, т.е. сверху располагалась иконка 32×32 пикселя и снизу подпись, необходимо выбрать действие на панели, перейти в Object Inspector"е выбрать вкладку свойств CommandProperties и указать в свойстве ButtonSize значение bsLarge. При этом ширина панели Ribbon автоматически изменится и вид панели Ribbon станет следующим: Теперь можете запустить приложение и проверить работу. Кроме того, что Вы можете располагать на панели действия в виде кнопок различного размера, Вы также можете, используя ActionManager располагать действия как CheckBox"ы, RadioButton"ы и т.д. Видите, новые опции при запуске приложение оказались недоступными? Все дело в том, что, если Action не имеет обработчика, то в работающем приложении его свойство Enabled автоматически переходит в значение false. Напишем три простых обработчика: procedure TForm2.Action1Execute(Sender: TObject); begin ShowMessage('RadioOption1 Executed'); Action1.Checked:=true; end; procedure TForm2.Action2Execute(Sender: TObject); begin ShowMessage('RadioOption2 Executed'); Action2.Checked:=true; end; procedure TForm2.Action3Execute(Sender: TObject); begin ShowMessage('RadioOption3 Executed'); Action3.Checked:=true; end; Для того, чтобы все три кнопки действовали как и полагается, чтобы в одно время могла быть нажата только одна кнопка, необходимо в ActionManager"е выставить у всех трех действий одинаковое свойство GroupIndex отличное от нуля. Аналогичным образом настраивается и панель быстрого запуска. Надеюсь, смысл работы с компонентом Ribbon в общих чертах Вам стал более-менее понятен. Поэтому переходим к следующему шагу разработки интерфейса - работе с всплывающими подсказками. 2.2. Работа с компонентом TScreenTipsManagerЕщё одной отличительной чертой интерфейса Ribbon являются красивые всплывающие подсказки. Эти подсказки (ScreenTips) помимо своей красоты и удобства являюся также и более информативными для пользователей нежели те же самые Hints. За работу и управление подсказками отвечает компонент TScreenTipsManager. Располагаем его на форме и в свойстве ScreenTips у компонента TRibbon указываем ScreenTipsManager1. Теперь вы можете создавать подсказки программно или воспользоваться редактором. Так как сегодня мы делаем только первый шаг в работе с Ribbon Controls, то рассмотрим работу визуального редактора. Выбираем компонент ScreenTipsManager1, в Object Inspector"e вызываем редактор свойства LinkedActionLists, и добавляем в список кже имеющийся компонент ActionManager1: Теперь в опциях Object Inspector выбираем действие "Generate Screen Tips". В итоге, если всё сделано правильно, то Вы должны получить сообщение следующего вида: Это сообщение означает, что ScreenTipsManager создал для каждого действия из ActionManager свою подсказку. Для того, чтобы изменить вид подсказок нажмите в Object Inspector"е "Edit Screen Tips" и перед Вами откроется визуальный редактор подсказок: Работа с редактором достаточно проста и удобна:
По умолчанию за текст подсказки принимается значение свойства Hint у действия. Создадим подсказку для одного из наших действий. Выбираем в редакторе действие OpenStartURL и заполняем текстовое поле: Загружаем картинку для подсказки. Для этого делаем двойной клик по соответствующему полю и выбираем рисунок в формате bmp. Дополнительно для каждой подсказки вы можете установить радиус скругления для углов (свойство Corner Size), изменить текст Footer"а, отключить показ заголовка, клавиш быстрого вызова (ShortCuts), а также изменить рисунок для Footer (по умолчанию это рисунок в виде вопросительного знака). Кроме такого вида всплывающих подсказок, вы также можете использовать компонент TScreenTipsPopup. 2.3. Работа с компонентом TScreenTipsPopupВ отличие от предыдущего компонента TScreenTipsPopup является визуальным компонентом. Смысл работы примерно тот же, что и у ScreenTipsManager, но за одним замечательным различием - TScreenTipsPopup может быть ассоциирован с любым компонентом формы, даже с тем у которого нет действия, описанного в ActionManager"е. В нашем случае таким компонентом является WebBrowser1. Давайте создадим для него свой Screen Tip. Эта же подсказка появится и при наведении указателя мыши на сам компонент ScreenTipsPopup. Пример приложения из этой статьи Вы можете скачать здесь |