Ribbon Controls крок за кроком. Крок 3 – робота зі ScreenTips.

Джерело: 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 властивості:



Додатково Ви можее налаштувати в редакторі вигляд і текст підказки при вимкненому дії (коли у 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 , Тому що ми асоціюємо підказку не конкретно з кнопкою виклику діалогу додаткових дій, а з усією панелькою RibbonGroup1 відразу. Але, тим не менш, варіант цілком працездатний. А якщо врахувати, що панелі Ribbon змінюють свій розмір автоматично, то при повному заповненні панелі діями користувач в принципі і не відчує "підступу".

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*