Страница 1 из 1

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

Добавлено: 11 Октябрь 2026, 14:02
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 - ссылки-переходы к любому элементу окна для Clarion 10 (ABC)

Добавлено: 11 Октябрь 2026, 17:08
gopstop2007
Как это выглядит в виде сообщения, есть вариант, что кнопки рядом с выделенным объектом

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

Добавлено: 11 Октябрь 2026, 17:14
gopstop2007
Шаблон

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

Добавлено: 11 Октябрь 2026, 19:41
finsoftrz
Я взял на вооружение другую схему. Есть chm справка, вызываемая во всех окнах нажатием F1 или кнопкой на тулбаре. Каждое окно привязано к определенному разделу справки, на который происходит позиционирование. Это как обычно. Нюанс в том, что основной chm файл содержит только текстовую информацию и дерево разделов. Иначе он будет сильно распухшим. Внутри раздела размещаются ссылки на другие, дополнительные chm, которые содержат инструкции со скриншотами или avi роликами. Ссылки открываются в контексте основного chm. Таким образом, пользователь видит общее описание содержимого окна, плюс меню Инструкции в заголовке chm раздела. На случай, если планируется много роликов (avi лежат отдельными файлами рядом с chm, на одном уровне или в подкаталогах), имеется настройка, где искать chm, чтобы не хранить их в каталоге программы.