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 компонент ScreenTipsPopup , Укладаємо його на форму і встановлюємо властивість Visible в false .


Тепер у властивості Associate вибираємо RibbonGroup1. У властивості ScreenTipsManager вказуємо ScreenTipManager1 і заповнюємо всі необхідні властивості у вкладці ScreenTip . Запускаємо програму і милуємося результатом:


Звичайно цей варіант ніяк не можна назвати витонченим або панацеєю від усіх хвороб. Швидше за все це щось на зразок “милиці” для 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>

*

*