(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Ribbon Controls шаг за шагом. Шаг 3 - работа со ScreenTips.

Источник: webdelphi

Источник: webdelphi

Да, давненько я уже не запускал Delphi 2010. Всё как-то в последнее время работа в Lazarus кипит.

Сегодня решил немного выделить время и снова поразбираться с Ribbon Controls. Как раз и причина появилась - вопрос читаеля блога. Конечно, если б вопрос касался чего-нибудь наподобие "где находится Action Manager?" то поста бы и не было, а был бы ответный комментарий. Но, простой на первый взгляд вопрос, касающийся работы со ScreenTips, чувствую может попортить кровь не одному желающему использовать Ribbon Controls. Поэтому расскажу-ка я про подсказки немного по-подробнее (заодно и самому будет потом шпаргалка, если вдруг чего забуду).

Итак, сегодняшний пост посвящён работе с подсказками Ribbon они же ScreenTips.Частично про ScreenTips я рассказывал в первом шаге своего изучения Ribbon . В отличие от стандартных Hints (подсказок), ScreenTips дают нам на порядок больше возможностей, в т.ч. вставка в подсказку своих изображений, использование горячих клавишь и т.д.

Рассмотрим простой пример использования ScreenTips .

Открываем Delphi 2010 , создаем новый проект и укладываем на главную форму ActionManager , Ribbon и ScreenTipsManager, как показано на рисунке:

У Ribbon создаем одну страницу RibbonPage1 (кому не нравятся стандартные имена - переименуйте, я показываю пример) и на этой странице располагаем одну группу RibbonGroup1 .

Теперь производим следующие манипуляции с компонентами:

  1. У компонента ScreenTipsManager1 открываем редактор свойства LinkedActionLists , жмем в редакторе кнопку "Add New…" или Ins . В итоге добавится пустой контейнер.
  2. Выбираем в редакторе " 0 - TActionListItem " и в Object Inspector"е указываем ActionManager1 :

Собственно теперь наш ScreenTipManager способен создать подсказки для всех действий определенных в ActionManager .

Теперь открываем двойным щелчком редактор ActionMaager"а и, не сильно заморачиваясь, добавляем в список новое дейтсвие:

Обработчик действия может быть каким угодно на Ваше усмотрение. Измените только у Action1 свойство Hint (сейчас нам это свойство будет очень важно). Пусть, допустим, оно будет равно "Подсказка для Action1″.

Теперь перетягиваем мышкой Action1 из редактора на RibbonGroup1 и у нас практически всё готово:

Всё, что нам теперь остается сделать - это сгенерировать подсказки. Делается это двойным кликом по компоненту ScreenTipsManager или с использованием опции "Generate Screen Tips" в Object Inspector.

При этом, если Вы всё сделали правильно, то получите сообщение вида:

Если же допущена ошибка, то, первое, что обычно видит пользователь после двойного клика по компоненту это:

Т.е. в данном случае не было определено свойство LinkedActionLists .

После того как подсказки сгенерированы, Вы можете смело присупать к их редактированию и настройке внешнего вида. Для этого Вы можете опять же воспользоваться встроенным редактором свойств, который доступен по двойному клику на компоненте и выглядит следующим образом:

В редакторе отражены все используемые у ScreenTip свойства:

  • ShowImage: boolean - показывать или нет картинку у подсказки
  • ShowFooter: boolean - показывать или нет "подвал" (нижнюю часть). Обычнов подвале размещается какая-либо дополнительная информация, например, как по умолчанию приглашение нажать F1 для получения справки.
  • ShowHeader: boolean - показывать или нет "шапку", в нашем случае - это название определенное для Action1.
  • Show Short Cut: boolean - показывать или нет горячие клавиши для действия, если они были определены.
  • Border Style - стиль бордюра. Для подсказки ScreenTip возможо применения двух стилей: Normal - при этом форма окна подсказки быдет прямоугольной и Rounded - для придания форме подсказки скругленых углов (используется по умолчанию).
  • Corner Size: integer - определяет радиус скругления углов для подсказки.
  • Color Start и Color End : TColor - определяют градиент заливки формы ScreenTip"а.
  • Offset X и Offset Y: integer - определяют на каком расстоянии от элемента будет располагаться подсказка. Чем больше значение - тем дальше от элемента появится ScreenTip .
  • FooterImage: TBitmap - изображение, которое будет расположено в "подвале". Желательно не выбирать слишком большие изображения.

Дополнительно Вы можее настроить в редакторе вид и текст подсказки при выключенном действии (когда у Action свойство Enabled усановлено в False ). Для этого необходимо включить свойство "Disabled " в группе "Mode"

Ну, а теперь устанавливаем у главной формы приложения свойство ShowHint в значение True и запускаем приложение. У меня получилась вот такая подсказка для действия Action1:

Красота да и только. Но это ещё не всё. Помните, я сказал, что свойство Hint у Action1 для нас важно ? Сказал я это не просто так. Вы, вероятно, заметили, что после того как подсказки были сгенерированы, то текст у подсказок по умолчанию соответствовал тому, что было написано в Hint ? Следовательно было бы логично предположить, что ScreenTipManager , а вместе с ним и Ribbon "наследуют" все подсказки из контейнеров. Давайте проверим так ли это на самом деле.

Выделяем RibbonGroup1 и в свойстве DialogAction указываем Action1 . По логике вещей мы ничего не поменяли ни в подсказках ни где. Теперь точно такой же ScreenTip должен появиться и у кнопки дополнительного действия у группы. Проверяем:

Спрашивается: что за дела? Действие тоже самое, подсказку не меняли, мэнеджер не трогали.

Я не буду утверждать, что это на самом деле - глюк или недокументированная возможность , но факт остается фактом - RibbonGroup с опеределенным свойством DialogAction плевать хотела на всякие подсказки.

Но ведь у того же Word 2007 такие подсказки работают превосходно. Признаюсь, после того как мне был задан вопрос по поводу подсказок для DialogAction , я полез копаться в модулях Ribbon , отслеживать что, откуда и как поступает, какие свойства перекрываются, какие наследуются и пр.  Дошло даже до того, что стал собирать свой собственный мэнеджер подсказок. А оказалось, что решение проблемы-то лежит на самой, что ни есть поверхности, а точнее на панели компонентов Ribbon Controls :) .

Смотрите, как всё оказывается просто. Берем с панели Ribbon Controls компонент ScreenTipsPopup , укладываем его на форму и устанавливаем свойство Visible в false .

Теперь в свойстве Associate выбираем RibbonGroup1 . В свойстве ScreenTipsManager указываем ScreenTipManager1 и заполняем все необходимые свойства во вкладке ScreenTip . Запускаем приложение и любуемся результатом:

Конечно этот вариант никак нельзя назвать изящным или панацеей от всех болезней. Скорее всего это что-то наподобие "костыля" для Ribbon Controls , т.к. мы ассоциируем подсказку не конкретно с кнопкой вызова диалога дополнительных действий, а со всей панелькой RibbonGroup1 сразу. Но, тем не менее, вариант вполне работоспособный. А если учесть, что панели Ribbon изменяют свой размер автоматически, то при полном заполнении панели действиями пользователь в принципе и не почувствует "подвоха".

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 18.01.2010 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Delphi Professional Named User
Enterprise Connectors (1 Year term)
VMware Workstation 14 Player for Linux and Windows, ESD
Quest Software. Toad for Oracle Development Suite
Stimulsoft Reports.Ultimate Single License Includes one year subscription, source code
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Компьютерный дизайн - Все графические редакторы
СУБД Oracle "с нуля"
3D и виртуальная реальность. Все о Macromedia Flash MX.
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100