AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.08.2009, 00:21   #1  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
HK Framework
Содержание:
  1. HK Framework - что это такое
  2. Как пользоваться
  3. Как добавить новый HK
  4. Базовая комплектация HK Framework
  5. Недостатки
  6. Инсталляция, совместимость
  7. Спасибо

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 и область его действия. Возможны следующие комбинации:
    1. "AOT action" - если HK работает в AOT. При этом поле "Action\Element name" лукапится по методам класса HKAOT (методы-обработчики для АОТ)
    2. "Editor action" - если HK работает в редакторе X++. При этом поле "Action\Element name" лукапится по методам класса CLS HKEditor (методы-обработчики для Редактора X++)
    3. "Editor script" - аналогично "Editor action", но поле "Action\Element name" лукапится по методам стандартного класса EditorScripts. Т.е. HK можно повесить на стандартные скрипты редактора.
    4. "Open form", "Open table", "RunClass", "RunJob" - позволяет по HK запустить форму, таблицу, класс, джоб. При этом, в поле "Action\Element name" лукапятся по формам, таблицам, классам, джобам соответственно.
  • Флаг "Enabled" отключает текущую HK.
  • Флаг "Enable hotkeys" отключает все HK.
  • Кнопка "Default" задает исходные настройки HK.

Как добавить новый HK:
  • Если нужно добавить HK для запуска формы\класса\таблицы*\джоба то достаточно лишь создать запись в форме HKSetup, в соответствии с настройками, описанными выше.
  • Если нужно добавить HK для АОТ или редактора X++, то необходимо:
    1. Создать новый метод-обработчик** HK в классе HKAOT или HKEditor, в зависимости от того, где будет работать новый HK.
    2. Создать новую запись в форме HKSetup и выбрать в поле "Action\Element name"
      созданный обработчик.
    3. Закрыть форму кнопкой "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 для кого-нибудь окажется полезным.
Вложения
Тип файла: xpo PrivateProject_HKFramework_1_0.xpo (217.6 Кб, 697 просмотров)
За это сообщение автора поблагодарили: AlGol (1), denny (1), Logger (15), Denicce (1), andrewK (1), konopello (3), Link (1), Kolja (1), madm (1), Stainless (1), alex55 (1), _scorp_ (4), SRF (3), JeS (1), Eaglet (1), Silphidae (1), pedrozzz (1), Dumfag (1).
Теги
ax2009, ax4.0, formdigger, hk, hkframework, hotkey, горячие клавиши, полезное, утилиты

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
palleagermark: Intelligent Data Management Framework For Microsoft Dynamics AX (Pre-Release) Blog bot DAX Blogs 0 01.07.2009 00:05
Inside Dynamics AX 4.0: The Security Framework Blog bot DAX Blogs 0 31.10.2007 11:40
Inside Dynamics AX 4.0: The Send Framework Blog bot DAX Blogs 0 05.10.2007 23:31
Inside Dynamics AX 4.0: RunBase Framework Extension Part IV Blog bot DAX Blogs 0 02.10.2007 04:49
Inside Dynamics AX 4.0: RunBase Framework Extension Part I Blog bot DAX Blogs 0 30.09.2007 09:20

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:02.