Содержание:
- HK Framework - что это такое
- Как пользоваться
- Как добавить новый HK
- Базовая комплектация HK Framework
- Недостатки
- Инсталляция, совместимость
- Спасибо
HK Framework - что это такое:
- HK Framework это инструмент, реализующий функциональность горячих клавиш в MS DAX. Особенностью HK Framework является то, что он не использует внешние компоненты (DLL, ActiveX) и ограничивается только XPO.
- HK Framework позволяет назначать горячие клавиши для трех областей: Редактор X++, AOТ и глобально, для всего приложения.
- HK Framework позволяет легко и быстро добавлять новую функциональность и вешать на неё свою комбинацию горячих клавиш. Принцип добавления такой же как и в EditorScripts.
Как пользоваться:
В тексте буду использовать сокращение HK (Hot key или Горячая клавиша).
Комбинации HK настраивается в форме
HKSetup. По-умолчанию, форма вызывается нажатием "Ctrl + ~", либо запуском класса
HKManager прямо из АОТ.
Описание полей формы:- Поля "Key 1", "Key 2", "Key 3" задают комбинацию клавиш.
- Поля "Action type" и "Action\Element name" определяют назначение HK и область его действия. Возможны следующие комбинации:
- "AOT action" - если HK работает в AOT. При этом поле "Action\Element name" лукапится по методам класса HKAOT (методы-обработчики для АОТ)
- "Editor action" - если HK работает в редакторе X++. При этом поле "Action\Element name" лукапится по методам класса CLS HKEditor (методы-обработчики для Редактора X++)
- "Editor script" - аналогично "Editor action", но поле "Action\Element name" лукапится по методам стандартного класса EditorScripts. Т.е. HK можно повесить на стандартные скрипты редактора.
- "Open form", "Open table", "RunClass", "RunJob" - позволяет по HK запустить форму, таблицу, класс, джоб. При этом, в поле "Action\Element name" лукапятся по формам, таблицам, классам, джобам соответственно.
- Флаг "Enabled" отключает текущую HK.
- Флаг "Enable hotkeys" отключает все HK.
- Кнопка "Default" задает исходные настройки HK.
Как добавить новый HK:
- Если нужно добавить HK для запуска формы\класса\таблицы*\джоба то достаточно лишь создать запись в форме HKSetup, в соответствии с настройками, описанными выше.
- Если нужно добавить HK для АОТ или редактора X++, то необходимо:
- Создать новый метод-обработчик** HK в классе HKAOT или HKEditor, в зависимости от того, где будет работать новый HK.
- Создать новую запись в форме HKSetup и выбрать в поле "Action\Element name"
созданный обработчик.
- Закрыть форму кнопкой "OK"***.
* - под запуском таблицы понимается открытие её в обозревателе.
** - примеры методов-обработчиков можно посмотреть в умомянутых классах.
*** - Форма
HKSetup представляет собой диалог, поэтому все изменения вступают в силу только после нажатия "OK".
Базовая комплектация HK Framework:
Для удобства, существующую функциональность, уже входящую в состав
HK Framework буду называть плагинами.
- aot2project: плагин для управление проектами разработки. Назначение - быстрое добавление по HK редактируемых элементов АОТ (можно добавлять сразу из редактора X++) в заранее указанный проект и проставление комментариев в ходе редактирования элементов. По "Alt+F3" настраивается имя проекта в АОТ, его описание и формат комментариев. Далее, по кнопке "Ctrl+K" (В АОТ либо в редакторе), текущий элемент добавляется в заранее указанный проект. При этом, в проекте создается нужная подгруппа для элемента а также соблюдается порядок сортировки, аналогичный дереву АОТ; для АОТ поддерживается multiSelect. По кнопкам "Ctrl+1", "Ctrl+2", "Ctrl+3" в редакторе X++ проставляется открывающий, простой и закрывающий комментарии соответственно.
- aotJump (AOT action, Ctrl+J): Плагин для быстрого "скольжения" по элементам АОТ. С помощью клавиши Ctrl+J можно "скользить" по следующим цепочкам\шагам (каждый элемент АОТ открывается новое окно АОТ):
- Класс --> Класс родитель --> Класс родитель --> ... --> Базовый класс
- TableField --> EDT --> EDT родитель --> EDT родитель --> ... --> Базовый EDT --> [ENUM]
- MenuItemButton --> MenuItem --> Класс\Форма\Отчет, в зависимости от типа MenuItem.
- Menu --> MenuItem
- FormDataSource --> Table\View
- уже не помню всех цепочек
- checkBestPractice (AOT action, Ctrl+B). Плагин проверяет текущий элемент на соответствие рекомендациям BestPractice
- copy2clipboard (AOT action, Ctrl+C). Плагин копирует имя текущего элемента АОТ в буфер обмена. Поддерживается multiSelect.
- tableBrowser (AOT action, Ctrl+O). Плагин открывает текущую таблицу в обозревателе
- openTableBrowser (Editor action, Ctrl+Ноль) Плагин открывает таблицу в обозревателе на которой установлен курсор в редакторе X++
- openNewWindow (Editor action, Ctrl+O) Плагин открывает элелемент АОТ в новом окне. Распознавание идет не по имени, а по типу.
Все HK, приведенные в описаниях плагинов можно переназначить в на уровне пользовательского интерфейса в форме
HKSetup.
Самое главное - запомнить одну горячую клавишу - "Ctrl+~". По ней откроется форма
HKSetup, где всегда можно увидеть весь список HK.
Недостатки:
-
HK Framework не использует внешние компоненты (DLL, ActiveX). Вследствие этого, он не перекрывает стандартные горячие клавиши. Т.е. если Вы назначите какой-то HK, который пересекается со стандартным, то стандартный HK отработает параллельно. Это накладывает ограничение на набор возможных комбинаций клавиш, который вы захотите использовать. Некоторые комбинации клавиш вообще не работают. Например, любая комбинация с клавишей ALT в редакторе X++ не работает (удобно использовать Ctrl). В общем, к процессу назначения новой горячей клавиши нужно подойти творчески
- детектирование комбинации клавиш несколько отличается от стандартного перехвата. Здесь важен момент одновременного нажатия клавиш, в то время как в стандарте достаточно быстрой последовательности нажатия. Поэтому для некоторых пользователей чувствительность может показаться недостаточной.
Инсталляция:
Данная версия тестировалась на DAX 4.0, 5.0.
Для 3-ки нужно чуть подпилить. В скором времени адаптирую.
Инсталляция очень проста - две простых модификации стандартных методов:
\Classes\ClassFactory\formRunClassOnClient:
X++:
client static FormRun formRunClassOnClient(Args args)
{
SysSetupFormRun sysSetupFormRun;
;
// HK "Hot key framework", evo 30.07.2009 -->
if (args && args.name() == formstr(SysEditorGotoLine))
{
return HKManager::editorCatchObject(args);
}
// HK "Hot key framework", evo 30.07.2009 <--
sysSetupFormRun = SysSetupFormRun::construct(args);
return sysSetupFormRun;
}
\Classes\Info\onEventGoingIdle:
X++:
client static FormRun formRunClassOnClient(Args args)
{
SysSetupFormRun sysSetupFormRun;
;
// HK "Hot key framework", evo 30.07.2009 -->
if (args && args.name() == formstr(SysEditorGotoLine))
{
return HKManager::editorCatchObject(args);
}
// HK "Hot key framework", evo 30.07.2009 <--
sysSetupFormRun = SysSetupFormRun::construct(args);
return sysSetupFormRun;
}
Рекомендуется данные модификации сделать аккуратно и вручную, причем ТОЛЬКО после импорта и компиляции всех остальных элементов
HKFramework. Данные классы живут в RunTime приложения, со всеми вытекающими...
Спасибо:
Спасибо за внимание. Надеюсь, большое количество букв не сильно утомило и
HK Framework для кого-нибудь окажется полезным.