03.08.2009, 00:21 | #1 |
Боец
|
HK Framework
Содержание:
HK Framework - что это такое:
Как пользоваться: В тексте буду использовать сокращение HK (Hot key или Горячая клавиша). Комбинации HK настраивается в форме HKSetup. По-умолчанию, форма вызывается нажатием "Ctrl + ~", либо запуском класса HKManager прямо из АОТ. Описание полей формы:
Как добавить новый HK:
* - под запуском таблицы понимается открытие её в обозревателе. ** - примеры методов-обработчиков можно посмотреть в умомянутых классах. *** - Форма HKSetup представляет собой диалог, поэтому все изменения вступают в силу только после нажатия "OK". Базовая комплектация HK Framework: Для удобства, существующую функциональность, уже входящую в состав HK Framework буду называть плагинами.
Все 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; } 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; } Спасибо: Спасибо за внимание. Надеюсь, большое количество букв не сильно утомило и HK Framework для кого-нибудь окажется полезным. |
|
|
За это сообщение автора поблагодарили: 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). |
03.08.2009, 07:38 | #2 |
Участник
|
Небольшие штрихи
Цитата:
При импорте проекта в DAX 4.0 (Aplication Version 4.0.1633.11) возникли ошибки компиляции HKProject\buildAOTStruct, ошибка в строке X++: TreeNode methodNode, classNode; X++: TreeNode methodNode; TreeNode classNode; Цитата:
Класс --> Класс родитель --> Класс родитель --> ... --> Базовый класс
Предлагаю такой вариант устранения помарки(HKAOT\aotJump), вместо : X++: case UtilElementType::Class: sysDictClass = new SysDictClass(className2Id(treeNode.treeNodeName())); if (sysDictClass && sysDictClass.extend()) treeNodeTargetPath = strFmt(#ClassNamePath, classid2name(sysDictClass.extend())); break; X++: case UtilElementType::Class: sysDictClass = new SysDictClass(className2Id(treeNode.treeNodeName())); if (sysDictClass && sysDictClass.extend()) treeNodeTargetPath = strFmt(#ClassNamePath, classid2name(sysDictClass.extend())); else { return; } break; X++: //Event fired by kernel when the client goes idle. //It is not fired during CTRL-Break dialog. void onEventGoingIdle() { this.operationProgressClear(); this.endLengthyOperation(true); // HK "Hot key framework", evo 30.07.2009 --> HKManager::startHKManager().run(false); // HK "Hot key framework", evo 30.07.2009 <-- }
__________________
Sergey Nefedov |
|
03.08.2009, 14:49 | #3 |
Боец
|
2 SRF: Спасибо, всё верно. Шероховатости наверное ещё будут, не было времени обкатать.
Ещё хочу добавить, что при установке в 5.0 (вообще для однозначности - при первой установке), нужно удалить метод \Classes\HKProject\aotStructList. При первом использовании плагина aot2project, он сгенерируется сам. |
|
27.01.2010, 12:39 | #4 |
Участник
|
При использовании функции добавления текущего элемента AOT в текущий проект, при копировании из другого проекта, элемент копируется но группы создаются некорректно
|
|
16.02.2010, 12:28 | #5 |
Участник
|
Разобрался в чем было дело, просто в различных приложениях узлы AOT в проекте называются по-разному, возможные варианты:
X++: ProjectGroupNode findOrCreateProjectGroup(TreeNode _treeNode) { #AOT ProjectGroupNode ret, groupNode, bufGroupNode; TreeNodePath path; TreeNodeName groupName; container pathCon; if (!projectNode || !_treeNode) return null; // + KAnt //path = strReplace(_treeNode.treeNodePath(), ' ', '_'); path = _treeNode.treeNodePath(); // - KAnt pathCon = str2con(path, #AOTRootPath); pathCon = condel(pathCon, 1, 1); // remove first delimiter groupNode = projectNode; while (conlen(pathCon) > 1) { groupName = conpeek(pathCon, 1); bufGroupNode = groupNode.AOTfindChild( groupName ); // + KAnt if(!bufGroupNode) { bufGroupNode = groupNode.AOTfindChild( strReplace(groupName, ' ', '_') ); } if(!bufGroupNode) { bufGroupNode = groupNode.AOTfindChild( strReplace(groupName, ' ', '') ); } // - KAnt if (!bufGroupNode) { bufGroupNode = groupNode.AOTadd(groupName); bufGroupNode.projectGroupType(SysTreeNode::path2ProjectGroupNodeType(_treeNode.treeNodePath())); this.changeGroupPos(bufGroupNode); } groupNode = bufGroupNode; pathCon = condel( pathCon, 1, 1); } ret = groupNode; return ret; } |
|
26.08.2010, 13:06 | #6 |
Участник
|
На формах настроенные горячие клавиши не срабатывают.
|
|
26.08.2010, 13:17 | #7 |
Участник
|
Попытался настроить вызов формы заказов по Ctrl+5. Открыл произвольную форму - нажимаю сочетание - никакой реакции
|
|
09.08.2011, 14:08 | #8 |
Участник
|
проект ещё разрабатывается? окончательный варинт можно скачать где-нибудь?
заметил, что блог http://earlionakru.blogspot.com/ с этим проектом тоже давно не обновлялся... |
|
10.08.2011, 00:16 | #9 |
Боец
|
Больше не разрабатывается, ничего нового не придумал. На блоге последняя версия
|
|
15.08.2011, 13:35 | #10 |
Британский учённый
|
Цитата:
Буду рад поделиться с общественностью, но не вижу смысла плодить версии да и авторское право не хочу нарушать. Если есть время и желание расширить функционал могу выложить здесь или лучше выслать на мыло. Вкратце что основного я добавил: 1) Новый класс для управления общими событиями: AOTImport - импорт из АОТ, для версии ниже 2009 mainMenu - вызов главного меню openDefaultProject - открыть проект по умолчанию leftSideFull, leftSideLeft, leftSideRight, rightSideFull, rightSideLeft, rightSideRight - управление окнами (Tabax) 2) Добавлены методы в для управления AOT: aot2compare - вызов утилиты сравнения aot2xRef - вызов перекрестных ссылок copyPath2clipboard - копировать полный путь (Tabax) newWindow - открыть новое окно 3) Добавлены методы для управления редактором goToDeclaration - известный скрипт, взят с форума openObject - расширил openNewWindow 4) Добавил на форму интеграцию с настройками девелоперского функционала.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
15.08.2011, 13:43 | #11 |
Британский учённый
|
Еще добавил фикс класса Info\onEventGoingIdle - проверка активного окна, что бы не срабатывали горячие клавиши, когда Аксапта свернута или открыто несколько клиентов.
X++: // HK "Hot key framework", mxk 30.07.2009 --> if (winApi::getForegroundWindow() == infolog.hWnd()) { DEV_HKManager::startHKManager().run(false); } // HK "Hot key framework", mxk 30.07.2009 <--
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
31.03.2013, 09:31 | #12 |
Участник
|
На AX2012 никто еще не портировал эти разработки?
|
|
01.04.2013, 10:50 | #13 |
Боец
|
Апгрейд в целом сделан, но я не выклыдывал - нет временени. Если у кого-то есть силы довести до "релиза", вышлю обновленный исходник. Из ниансов:
- HK больше не работает в редакторе X++ (нужен анализ, возможно ли сейчас его прикрутить) - Добавлен TaskList, Где видна история всех сделанных модификаций - Form Digger и HK Framework теперь одно целое. |
|
|
За это сообщение автора поблагодарили: Ace of Database (4), Stainless (1). |
01.04.2013, 13:27 | #14 |
Участник
|
В редакторе X++ можно теперь использовать расширения для VS. Может и хоткеи так добавятся?
|
|
|
За это сообщение автора поблагодарили: mazzy (2). |
01.04.2013, 17:10 | #15 |
Боец
|
Цитата:
Сообщение от belugin
В редакторе X++ можно теперь использовать расширения для VS. Может и хоткеи так добавятся?
|
|
02.07.2015, 17:07 | #16 |
Боец
|
Новая версия для 2012 R2, R3, от Декабря 2014г.
Вложение 9316 Что нового:
По установке:
По работе:
Вложение 9313 Еще пару слов: Вероятнее всего это последняя версия, по причинам:
Последний раз редактировалось DSPIC; 28.09.2017 в 01:50. |
|
|
За это сообщение автора поблагодарили: Logger (10), Ace of Database (10), Link (5), alex55 (5), S.Kuskov (5). |
26.07.2016, 15:45 | #17 |
Боец
|
По просьбе qwosy выкладываю исходник HKFramework2012R3.dll
Вложение 10886 - если не затруднит, выложите сюда пересобранную версию и исходник для CU11 - если возможно, переименуйте финальную dll в Microsoft.Dynamics.AX.Editor.HKFramework.dll, ибо режет глаз - проект под VS2010, можно переделать в VS2015 Последний раз редактировалось DSPIC; 28.09.2017 в 01:50. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
27.07.2016, 08:43 | #18 |
Участник
|
Собранная в VS2010 рабочая Microsoft.Dynamics.AX.Editor.HKFramework.dll с библиотеками от AX 2012 R3 CU11:
|
|
|
За это сообщение автора поблагодарили: DSPIC (14). |
27.07.2016, 08:50 | #19 |
Участник
|
а может положите на github?
|
|
27.07.2016, 10:30 | #20 |
Боец
|
|
|
Теги |
ax2009, ax4.0, formdigger, hk, hkframework, hotkey, горячие клавиши, полезное, утилиты |
|
|