02.08.2007, 21:47 | #241 |
Участник
|
Навреное надо закрывать табакс по симетричному событию - застра попробую
|
|
03.08.2007, 10:39 | #242 |
Участник
|
падение не воспроизводится (4.0.2163)
|
|
03.08.2007, 10:52 | #243 |
Участник
|
У меня сегодня тоже
|
|
07.08.2007, 15:57 | #244 |
Участник
|
0.3.2:
http://erpkb.com/Axapta/Tabax
0.3.2:
AxPath://MenuItem/Display/VendTable?dataAreaId=dat&AccountNum=Монтаж |
|
03.10.2007, 09:59 | #245 |
Участник
|
Табаксу - год
|
|
|
За это сообщение автора поблагодарили: blokva (3), oip (11), MikeR (3). |
03.10.2007, 12:11 | #246 |
Пенсионер
|
Поздравляю с днем варенья "ребенка", классный он получился, спасибо!
__________________
Законы природы еще никто не отменял! А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
03.10.2007, 12:21 | #247 |
Участник
|
Он не получился бы без многих людей, без AndyD в первую голову (на нем вся win32api магия), Также много полезного сделали Иван Кашперук, Олег (oip) и другие люди приславшие патчи, тестировавшие и предлагавшие фичи.
|
|
04.10.2007, 07:53 | #248 |
Пенсионер
|
Цитата:
Большой респект всем "родителям и воспитателям!" и поздравления!
__________________
Законы природы еще никто не отменял! А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
24.02.2008, 23:07 | #249 |
Участник
|
Иногда не работало определение текущего метода, текст которого был модифицирован.
Исправление: \Forms\Tabax\Methods\getCurMethod X++: ... TreeNode fromMethods(TreeNode _parent, str _name) { TreeNode ret = _parent; ; if (this.strEndsWith(_name, ' *')) _name = subStr(_name, 1, strLen(_name) - 2); if (ret) ret = ret.AOTfindChild('methods'); if (ret) ret = ret.AOTfindChild(_name); return ret; } |
|
|
За это сообщение автора поблагодарили: jasper (1). |
14.04.2008, 17:32 | #250 |
Участник
|
\Forms\Tabax\Designs\Design\[Group:toolbar]\ButtonpenApplObjBut\Methods\clicked
Добавление обработки диалогов в стрелочке вверх X++: str getCallerPath() { switch (true) { case SysdictClass::isEqualOrSuperClass(classidget(caller), classNum(SysSetupFormRun)): return #formsPath+'\\'+caller.name(); case SysdictClass::isEqualOrSuperClass(classidget(caller), classNum(RunBase)): return #classesPath+'\\'+classId2Name(classIdGet(caller.runBase())); case SysdictClass::isEqualOrSuperClass(classidget(caller), classNum(DialogRunBase)): return #classesPath + '\\' + classId2Name(classIdGet(caller.runBase())); // ================== вот тута ================================== case SysdictClass::isEqualOrSuperClass(classidget(caller), classNum(Dialog)): return #classesPath + '\\' + classId2Name(classIdGet(caller.caller())); case SysdictClass::isEqualOrSuperClass(classidget(caller), classNum(ReportRun)): return #reportsPath + '\\' + caller.name(); case SysdictClass::isEqualOrSuperClass(classidget(caller), classNum(QueryRun)): return #queriesPath + '\\' + caller.name(); default: return #classesPath + '\\' + classId2Name(classIdGet(caller)); } } |
|
02.06.2008, 15:52 | #251 |
Участник
|
Очень понравился Tabax. Не знаю как я без него обходился.
Правда для себя я контрол tab сделал не видимым и код не много изменил в методе autoHeight X++: //WINAPI::setWindowPos(this.Hwnd(),0,0, w - x, ht - y, true,false, WINAPI::setWindowPos(this.Hwnd(),0,0, w - x, 25, true,false, Плюс некоторые кнопки тоже сделал невидимыми, которыми тоже особенно не буду пользоваться. Если кто-то хочет добавить дополнительные кнопки для работы с функциями EditorScripts, то можно 1) В класс Info добавить описание Editor curEditor; 2) Создать метод в классе Info X++: Editor editor(Editor _e = curEditor)
{
;
curEditor = _e;
return curEditor;
} X++: infolog.editor(e); X++: public void activate(boolean _active) { DLL winApiDLL = new DLL('User32'); DLLFunction keybd_event = new DLLFunction(winApiDLL, 'keybd_event'); ; keybd_event.arg(ExtTypes::Byte, ExtTypes::Byte, ExtTypes::DWord, ExtTypes::DWord); keybd_event.call('18', 0, 0, 0); keybd_event.call('77', 0, 0, 0); keybd_event.call('77', 0, 2, 0); keybd_event.call('18', 0, 2, 0); super(_active); } X++: void clicked() { EditorScripts es; Editor e; ; super(); e = infolog.editor(); es = new EditorScripts(); es.NewWindow(e);//ваш script } |
|
|
За это сообщение автора поблагодарили: belugin (5), alex55 (0). |
05.06.2008, 17:07 | #252 |
Участник
|
А еще можно реализовать автозапуск Tabax'а без модификации стандартных классов
Делается это достаточно просто... 1) Нужно создать простенький XMLчик вида: <?xml version="1.0" encoding="utf-8" ?> <AxaptaAutoRun exitWhenDone="false" version="4.0" logFile="C:\Program Files\Microsoft Dynamics AX\40\Application\Share\Include\tabax\AutoRun\AxOpenTabax.log"> <Run type="displayMenuItem" name="Tabax"/> </AxaptaAutoRun> 2) Далее в папке где лежат картинки для кнопочек(ну можно канешно в любую, но для удобства наверное лучше там), создал папку AutoRun и кинул XMLку(параметр logFile в XML'е еще по этому пути создаст текстовичок с логом). 3) Ну и осталось прописать эту XMLку при запуске... Для этого открываем Конфигурационную утилиту клиента, видим на 1ой закладке поле "Command to run at application startup". Сюда нам необходимо забить строчку вида: AutoRun_полный путь к файлу XML В моем случае это выглядит так: AutoRun_C:\Program Files\Microsoft Dynamics AX\40\Application\Share\Include\tabax\AutoRun\openTabax.xml и ВСЁ... Наслаждаемся Tabax'ом при открытии |
|
|
За это сообщение автора поблагодарили: sukhanchik (6). |
05.06.2008, 17:39 | #253 |
Administrator
|
Цитата:
Основная задача - послать окну Editora сообщение (окно найти через WinAPI) Alt+M (ну или какое другое) для того, чтобы ядро запустило метод showScripts. Далее - задача передать из Tabax информацию о том, какой метод запускать и задача определить в showScripts что его вызвали из Tabax. Передать можно через Infolog.globalcache, а определить - опять-таки - по наличию команды в globalcache. По крайней мере такой способ не затронет системные классы.
__________________
Возможно сделать все. Вопрос времени |
|
11.07.2008, 09:14 | #254 |
Участник
|
Цитата:
Сообщение от sukhanchik
Можно (по идее) попробовать обойтись и без правки класса Info.
Основная задача - послать окну Editora сообщение (окно найти через WinAPI) Alt+M (ну или какое другое) для того, чтобы ядро запустило метод showScripts. Далее - задача передать из Tabax информацию о том, какой метод запускать и задача определить в showScripts что его вызвали из Tabax. Передать можно через Infolog.globalcache, а определить - опять-таки - по наличию команды в globalcache. По крайней мере такой способ не затронет системные классы. Есть новая кнопочка которую можно при желании повесить в tabax. Стоим в коде на каком-нибудь поле таблицы, жмём кнопку "Справка по полю". Открывается форма с help-ом по полю и с путями в каких формах используется это поле для ввода данных или для просмотра. Если жмём на этот путь открывается в новом окне эта форма. В классе SysHelpBook изменить construct Добавить X++: case 'a': return new SysHelpBookField(sysHelp, url); X++: void clicked() { EditorScripts es; Editor e; ; super(); e = infolog.editor(); es = new EditorScripts(); es.helpField(e); } Метод в класс Editor X++: void helpField(Editor e) { TreeNode treeNode = TreeNode::findNode(e.path()); TmpxRefReferences tmpxRefReferences; Column nCol = e.columnNo() + 1; Line nLine = e.currentLineNo() + 1; ; treeNode.AOTmakeXref(1); tmpxRefReferences = xRefCreate::makeTmp(infolog.lastxRef()); select firstonly tmpxRefReferences order by Column desc where tmpxRefReferences.line == nLine && tmpxRefReferences.Column <= nCol; if (!tmpxRefReferences) return; treeNode = TreeNode::findNode(tmpxRefReferences.path()); if (treeNode && tmpxRefReferences.Kind == xRefKind::TableField) { HelpField::checkPost(tmpxRefReferences.parentName, tmpxRefReferences.name); } } Последний раз редактировалось miklenew; 21.07.2008 в 13:21. |
|
11.07.2008, 12:06 | #255 |
Administrator
|
А насколько сие жизнеспособно в 4-ке? Там же много чего потерли из хелпа.... Ну... в смысле "перенесли в отдельный chm-файл")
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 11.07.2008 в 12:08. |
|
11.07.2008, 12:47 | #256 |
Участник
|
Цитата:
Через две недели будет отпуск, поставлю. Так что не знаю будет оно там работать или нет. Но уверен адаптировать можно. MS вроде редко отчего то отказываются, обычно дописывают. |
|
11.07.2008, 15:25 | #257 |
Administrator
|
А... ну-ну... сразу скажу - не пробовал... но отдельная доля скепсиса у меня присутствует.
В конкретно этом случае - МС действительно отказалась от интегрированного хелпа. Остаолсь лишь то, до чего руки "не дошли" видимо... Ну посмотрим.. Будет время - сам гляну
__________________
Возможно сделать все. Вопрос времени |
|
11.07.2008, 18:29 | #258 |
Участник
|
Sidax & Tabax for Ax 2009 beta
Tabax Работает с окнами вне главного окна аксапты (ну кроме функций управления окнами - имеется ввиду кнопки типа браузера таблиц) У Sidax изменился способ вызова пунктов меню, чтобы вызванное окно оставалось активным http://erpkb.com/Axapta/Tabax/files?...ax2009beta.zip |
|
21.07.2008, 13:23 | #259 |
Участник
|
Цитата:
Сообщение от miklenew
Есть новая кнопочка которую можно при желании повесить в tabax.
Стоим в коде на каком-нибудь поле таблицы, жмём кнопку "Справка по полю". Открывается форма с help-ом по полю и с путями в каких формах используется это поле для ввода данных или для просмотра. Если жмём на этот путь открывается в новом окне эта форма. добавить ещё и CheckBox.(забыл про галку) В исходном хро исправил. |
|
05.09.2008, 13:17 | #260 |
Участник
|
Небольшой баг - если название контрола или дс == названию формы, редактор не воспринимался
X++: /// returns control from form _form with the name _name TreeNode controlByName(TreeNode _form, str _name) { TreeNodeTraverser i = new TreeNodeTraverser(_form, false); TreeNode node = i.next(); while (node) { if (match(@": +name: +#"+_name+': +', node.AOTgetProperties())) return node; node = i.next(); } return null; } |
|
Теги |
tabax, taskbar, toolbar, инструменты, панель задач, панель инструментов, полезное, табакс, тулбар, управление окнами |
|
|