Ribbon в Delphi

С появлением Windows Vista, а затем Office 2007, многие программисты почувствовали себя неуверенно. Оно и понятно – очень много изменений, особенно в интерфейсе. Одним из них стал Ribbon. Лента (в переводе именно это означает Риббон) заменила собой привычные тулбары. Более эргономичная, более удобная, более красивая. Имеет также ряд недостатков, о которых будет сказано ниже.

altСобственно речь пойдет вот об этом:
Одни из крупнейших производителей компонентов, такие как TMS и Developer Express уже представили на суд публике свои реализации риббона. Если первые сделали это еще осенью, то вторые – только в декабре.

Лично я очень не люблю компоненты TMS. Может конечный пользователь и не заметит разницы, но по удобству использования в режиме проектирования они безоговорочно проигрывают ExpressBars. По этой причине будут рассмотрены только DevExoress’ы.

Компоненты и возможности

В поставку ExpressBars 6 beta 2 входит демка редактора:

Все, что показано на скриншоте, будет доступно разработчику: начиная от самого Риббона и заканчивая шкуркой окна. На вкладке ExpressBars появилось 5 новых компонентов. На форме все выглядит так:

alt



1 — Ribbon
2 — Status bar
3 — Application menu
4 — Popup в соответствующем стиле
5 — Хранилище визуальных подсказок (screen tip)

Ribbon

Не смотря на самостоятельность, управляется это добро с помощью BarManager. Риббон является своеобразным контейнером для созданных тулбаров. Создавая панели инструментов, мы привязываем их с помощью свойства к одной из нами созданных групп(RibbonGroup). Причем каждая группа принадлежит одной из вкладок (RibbonTab). Таким образом, мы можем разместить несколько панелей инструментов на одной вкладке. Управлять всем этим одно удовольствие, в отличии от тмс.

Quick access toolbar – панель инструментов быстрого доступа.

В зависимости от размещения панели (за это отвечает QuickAccessToolbar->Position), изменяется и вид ленты. По умолчанию QAT располагается под, но если в свойстве указать AboveRibbon, внешний вид Риббона преобразится: появится стильная иконка (1), являющаяся не просто декоративным украшением, а предназначенная для вызова особого меню (об этом чуть ниже). Сама же панель(2) также будет выглядеть по-другому:

Application menu
То самое меню, что вызывается при нажатии на большую круглую кнопку. Является частичным аналогом пункта «файл». За нее отвечает компонент dxBarApplicationMenu.

Не нужно обладать особым талантом, чтобы совершить двойной щелчок мышью и перетащить в окно элементы из менеджера баров — все предельно просто.

Screen tip
Новая, более наглядная подсказка. За счет добавления изображения, можно еще проще донести до пользователя назначение контролла. Необходимо заметить, что размер картинки жестко ограничен. Показанный выше пример – предел (изображение с большими размерами будет сжато до необходимого). Картинка не является обязательным атрибутом. Просто текст, кстати, тоже выглядит неплохо.

Стили

3 цветовые схемы: голубая, серебряная и черная. К сожалению, если вы решитесь использовать ленту в своих проектах, придется искать остальные элементы управления в соответствующем стиле. Иначе получится колхоз. Кстати, возможности добавлять новые шкурки — нет (может оно и к лучшему).

Чтобы «одеть» окно в другую шкурку, необходимо помимо указания в соответствующем свойстве(SupportNonClienDrawing), изменить родителя формы на TdxCustomRibbonForm, подключив модуль dxRibbonForm.

Status bar

Ничего особого. Натравите статус бар через специальное свойство и он будет выглядеть как Риббон.

Недостатки

А теперь поговорим о грустном. Недостатков полно, не только из-за кучи багов (все конечно будет исправлено в финальной версии), а в самой концепции, придуманной Майкрософтом.

Фиксированная высота

Этот фактор является наиболее ограничивающим, так как делает невозможным применение ленты в диалоговых окнах (как никак, 150 пикселей), хотя исключения, безусловно, найдутся.

Внешний вид

Под пестроту ленты придется подстраивать весь внешний вид программы. Ибо обычные кнопки и панели точно не будут сочетаться. Если не хотите, чтобы на вас показывали пальцем – постарайтесь запастись соответствующими компонентами.

Низкая производительность

Если использовать слишком много контроллов, приложение начинает заметно тормозить (при перерисовке). За примером далеко ходить не надо – возьмите ту же демонстрационную программу.

Отсутствие свойств выравнивания групп (align).

Это очень большая недоработка. Иногда хочется растянуть группу по всей ленте, но нельзя. Будем надеяться, что в финальной версии данная возможность будет реализована.

Заключение

Подводя итог, хочется отметить, что рибон (по крайне мере в текущей реализации) не придет на смену привычным меню. Жестко заданный размер не позволит разработчику использовать ленту в диалоговых окнах, вся эта красота заставит подгонять все остальные элементы управления под один стиль. Риббон займет свое место, но полностью вытеснить обычные тулбары ему вряд ли удасться (да и, скорее всего, разработчики не ставят перед собой такую задачу).

Напоследок, посоветую использовать ленту только там, где она действительно нужна. Не стоит внедрять ее в свое приложение только из-за красоты или следования моде.

Понравилась статья? Поделиться с друзьями: