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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.04.2008, 17:32   #1  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
\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   #2  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Очень понравился 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;
}
3) В классе EditorScripts метод showScripts закоментировал потому что не особенно он мне нужен. Оставил только.
X++:
infolog.editor(e);
4) В формe Tabax перекрыть метод activate().
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);
}
5) В методе clicked вашей кнопки написать код
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:39   #3  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,288 / 3495 (123) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от miklenew Посмотреть сообщение
Если кто-то хочет добавить дополнительные кнопки для работы с функциями EditorScripts, то можно
1) В класс Info добавить описание Editor curEditor;
2) Создать метод в классе Info
Можно (по идее) попробовать обойтись и без правки класса Info.
Основная задача - послать окну Editora сообщение (окно найти через WinAPI) Alt+M (ну или какое другое) для того, чтобы ядро запустило метод showScripts.
Далее - задача передать из Tabax информацию о том, какой метод запускать и задача определить в showScripts что его вызвали из Tabax.
Передать можно через Infolog.globalcache, а определить - опять-таки - по наличию команды в globalcache.
По крайней мере такой способ не затронет системные классы.
__________________
Возможно сделать все. Вопрос времени
Старый 11.07.2008, 09:14   #4  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от 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 получить писал выше.
Метод в класс 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);
    }
}
Миниатюры
Нажмите на изображение для увеличения
Название: 1.JPG
Просмотров: 218
Размер:	39.9 Кб
ID:	3565   Нажмите на изображение для увеличения
Название: 2.JPG
Просмотров: 348
Размер:	61.7 Кб
ID:	3566  

Нажмите на изображение для увеличения
Название: 3.JPG
Просмотров: 476
Размер:	68.0 Кб
ID:	3567  
Вложения
Тип файла: xpo HelpFieldEditor.xpo (12.3 Кб, 231 просмотров)

Последний раз редактировалось miklenew; 21.07.2008 в 13:21.
Старый 21.07.2008, 13:23   #5  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от miklenew Посмотреть сообщение
Есть новая кнопочка которую можно при желании повесить в tabax.
Стоим в коде на каком-нибудь поле таблицы, жмём кнопку "Справка по полю".
Открывается форма с help-ом по полю и с путями в каких формах используется это поле для ввода данных или для просмотра.
Если жмём на этот путь открывается в новом окне эта форма.
Ошибочку нашёл в класс HelpField метод label()
добавить ещё и CheckBox.(забыл про галку)
В исходном хро исправил.
Старый 27.08.2009, 17:34   #6  
Denicce is offline
Denicce
Участник
 
62 / 54 (2) ++++
Регистрация: 22.03.2005
Адрес: Москва
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Можно (по идее) попробовать обойтись и без правки класса Info.
Основная задача - послать окну Editora сообщение (окно найти через WinAPI) Alt+M (ну или какое другое) для того, чтобы ядро запустило метод showScripts.
Далее - задача передать из Tabax информацию о том, какой метод запускать и задача определить в showScripts что его вызвали из Tabax.
Передать можно через Infolog.globalcache, а определить - опять-таки - по наличию команды в globalcache.
По крайней мере такой способ не затронет системные классы.
что-нибудь получилось написать, чтобы в табакс передать editor на 4.0? Кстати, в 4.0 вроде основной метод скриптов не ShowScripts, а getApplicableScripts, как я понял. Попытался использовать [ANN] Tabax 0.1 -- панель задач для Axapta, не получилось. Глюки какие-то лезут.
Старый 27.08.2009, 19:19   #7  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1235 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от Denicce Посмотреть сообщение
что-нибудь получилось написать, чтобы в табакс передать editor на 4.0? Кстати, в 4.0 вроде основной метод скриптов не ShowScripts, а getApplicableScripts, как я понял. Попытался использовать [ANN] Tabax 0.1 -- панель задач для Axapta, не получилось. Глюки какие-то лезут.
Здесь HK Framework реализован совершенно иной путь отлова Editor'a, и ещё куча разных вкусностей

А здесь Получение экземпляра текущего Editor описан принцип.

Последний раз редактировалось DSPIC; 27.08.2009 в 19:22.
Теги
tabax, taskbar, toolbar, инструменты, панель задач, панель инструментов, полезное, табакс, тулбар, управление окнами

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
[ANN] Sidax 0.3.6 - многоцелевая боковая панель для Axapta belugin DAX: База знаний и проекты 104 30.06.2008 11:32
axaptafreak: Tabax: tabbed Axapta interface !!!! Blog bot DAX Blogs 0 10.11.2006 01:14
Панель задач в Аксапте wb DAX: Программирование 14 18.04.2006 17:13
Говорят вышел SP2 для Axapta 3. Кто нибуть что знает на эту тему? soin DAX: Прочие вопросы 10 13.10.2003 10:43
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:33.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.