RAV_GoTo - ссылки-переходы к любому элементу окна для Clarion 10 (ABC)

Программы на Clarion, шаблоны, библиотеки и пр.

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
gopstop2007
Полимат
Сообщения: 1903
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 33 раза
Поблагодарили: 15 раз

RAV_GoTo - ссылки-переходы к любому элементу окна для Clarion 10 (ABC)

Сообщение gopstop2007 »

RAV_GoTo - ссылки-переходы к любому элементу окна для Clarion 10 (ABC)

Делал этот шаблон для себя, под свои задачи, и решил поделиться: вдруг он кому-то пригодится. Буду рад, если он кому-нибудь поможет.

Шаблон для Clarion 10 (ABC), который позволяет сделать в вашем приложении кликабельные ссылки-переходы: пользователь нажимает на слово-ссылку (или кнопку), и приложение само переносит его к нужному элементу окна: переключает вкладки, обводит цель рамкой и предлагает вернуться на прежнее место. Вам не нужно писать код в окне - ссылки и цели настраиваются в IDE.

Зачем это нужно
Spoiler
Тексты справки и подсказок в приложениях обычно описывают путь словами: "нажмите такую-то кнопку", "откройте такую-то вкладку". Пользователь, который видит ваше приложение впервые, не знает, что это и где находится. Для вас как автора очевидно, для новичка нет. Ссылка-переход снимает вопрос "где это?": пользователь нажал - и ему показали. Особенно полезно для отключённых элементов: пользователь видит серую кнопку и не понимает, почему она недоступна. Ссылка обводит её рамкой и объясняет причину.
Кому и когда он нужен
Spoiler
Шаблон не универсален, и сразу скажу честно: если окна у вас небольшие, с несколькими элементами и без вкладок, он вам не нужен - там и так всё видно, переходить некуда.

Он пригодится там, где окна большие: много элементов и много вкладок. Типичная ситуация: пользователь работает на одной вкладке, а подсказка отправляет его к элементу на другой, например на первой вкладке, тогда как сам он находится на десятой. Не всегда понятно, что и где находится, особенно новичку. Ссылка сама переключает вкладки, находит элемент, обводит его рамкой и позволяет вернуться обратно.
Что умеет
Spoiler
Что получает пользователь вашего приложения
  • Переход к цели одним нажатием - цель может быть любым элементом окна: кнопка, список, поле, текст, вкладка. Если цель на другой вкладке (в том числе во вложенных), шаблон сам переключает вкладки
  • Работает с отключёнными элементами - серая (disabled) кнопка тоже обводится рамкой, можно показать пояснение, почему она недоступна
  • Рамка вокруг цели - по умолчанию красная, цвет и толщина настраиваются в IDE; рамка сама пропадает при смене вкладки, при нажатии на цель или при возврате
  • Возврат на прежнее место - после перехода пользователь может вернуться туда, откуда пришёл, или остаться на цели. Способ возврата выбирается отдельно для каждой ссылки:
    • Авто (по умолчанию) - плашка рядом с целью, если для неё есть чистое место, иначе окно с вопросом. Плашка никогда не закроет другие кнопки и поля
    • Только плашка - небольшая панель рядом с рамкой: пояснение и кнопки "Назад" и "Остаться"
    • Только окно с вопросом - оформленное окно по центру: серая вводная строка, пояснение выделено цветом и полоской, вопрос "Вернуться на прежнее место?" и две кнопки
    • Без возврата - только переход и рамка
  • Клавиша Esc (по желанию, по умолчанию выключено) - вернуться назад, пока подсвечена цель
  • Несколько ссылок рядом - в одной строке справки может быть сколько угодно ссылок, каждая ведёт к своей цели
Что получаете вы как программист
  • Без единой строчки ручного кода - всё настраивается в IDE: ссылка, цель из списка контролов окна, способ возврата, пояснение
  • Два Control-шаблона - бросаются на окно в дизайнере, объект выбирать не нужно, задаётся только цель:
    • Ссылка-переход - слово-ссылка: синий подчёркнутый текст, курсор-рука над ним
    • Кнопка-переход - обычная кнопка, которая работает как ссылка
  • Extension на процедуре - включает механизм на окне и содержит список ссылок: можно превратить в ссылку уже существующую кнопку окна, выбрав её в списке
  • Глобальный extension - общие настройки для всех окон: цвет и толщина рамки, отступ рамки от цели, ширина плашки, клавиша Esc, режим вопроса о возврате (оформленное окно или стандартный MESSAGE), отладка
  • Не нужно ловить события в окне - класс сам подписывается на события окна (REGISTEREVENT), поэтому вставки в ThisWindow.TakeEvent не нужны
  • Сосуществует с масштабированием окон - рамка и плашка пересчитываются при изменении размера окна
  • Готов к мульти-DLL - в классе нет глобальных данных, подключается через INCLUDE в нужных DLL
  • Метки Start/End - весь генерируемый код обрамлён комментариями с именем расширения, сразу видно, что вставил шаблон
Как это работает внутри
Spoiler
  • Класс RAV_GoToClass (RAV_GoTo.inc/.clw) хранит список ссылок окна и подписывается на события окна
  • Рамка и плашка создаются в момент перехода через CREATE на вкладке цели, поэтому они видны только пока видна эта вкладка
  • При нажатии на ссылку класс запоминает, откуда пришли (вкладку и контрол), переключает вкладки до цели, ставит фокус на цель (если она доступна и может принимать фокус), рисует рамку и показывает плашку или вопрос
  • Режим "Авто": перед показом плашки проверяется, не перекроет ли она другие видимые контролы той же вкладки; если перекроет - вместо плашки выводится окно с вопросом
Требования
  • Clarion 10, ABC
  • Никаких сторонних библиотек
Установка

Стандартная структура Clarion10\accessory\ (libsrc\win, template\win, doc) - скопировать поверх установки Clarion, зарегистрировать шаблон RAV_GoTo.tpl. В приложении добавить глобальный extension RAV: ссылки-переходы - глобально, на нужных процедурах - extension RAV: ссылки-переходы на окне, затем бросить на окно контрол RAV: ссылка-переход или RAV: кнопка-переход и выбрать цель.

Один раз подключили - и любую подсказку в вашем приложении можно превратить в ссылку, которая сама приводит пользователя к нужному месту. Если шаблон пригодится - отлично; замечания и пожелания приветствуются.
Вложения
Rav_GoTo.zip
(11.17 КБ) 4 скачивания
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
gopstop2007
Полимат
Сообщения: 1903
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 33 раза
Поблагодарили: 15 раз

RAV_GoTo - ссылки-переходы к любому элементу окна для Clarion 10 (ABC)

Сообщение gopstop2007 »

Как это выглядит в виде сообщения, есть вариант, что кнопки рядом с выделенным объектом
Вложения
rav_goto01.png
rav_goto02.png
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
gopstop2007
Полимат
Сообщения: 1903
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 33 раза
Поблагодарили: 15 раз

RAV_GoTo - ссылки-переходы к любому элементу окна для Clarion 10 (ABC)

Сообщение gopstop2007 »

Шаблон
Вложения
rav_goto03.png
rav_goto04.png
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 6167
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 26 раз
Поблагодарили: 92 раза

RAV_GoTo - ссылки-переходы к любому элементу окна для Clarion 10 (ABC)

Сообщение finsoftrz »

Я взял на вооружение другую схему. Есть chm справка, вызываемая во всех окнах нажатием F1 или кнопкой на тулбаре. Каждое окно привязано к определенному разделу справки, на который происходит позиционирование. Это как обычно. Нюанс в том, что основной chm файл содержит только текстовую информацию и дерево разделов. Иначе он будет сильно распухшим. Внутри раздела размещаются ссылки на другие, дополнительные chm, которые содержат инструкции со скриншотами или avi роликами. Ссылки открываются в контексте основного chm. Таким образом, пользователь видит общее описание содержимого окна, плюс меню Инструкции в заголовке chm раздела. На случай, если планируется много роликов (avi лежат отдельными файлами рядом с chm, на одном уровне или в подкаталогах), имеется настройка, где искать chm, чтобы не хранить их в каталоге программы.
C6/C12, ШВС, tps/btrieve.
Ответить