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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.05.2008, 16:18  Ссылка на сообщение   #1  
miklenew is offline
miklenew
Участник
Аватар для miklenew
Лучший по профессии 2009
MCBMSS
 
1,438 / 279 (12) ++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Открыть в новом окне объект из кода

Если кликнуть в какой-нибудь участок кода и выбрать NewWindows, то система проанализирует на каком объекте мы стоим и откроет этот объект в новом окне.
Если это табличная переменная, система сделает анализ от какой таблицы она образована и откроет эту таблицу.
Выделять объект не надо. Просто ткнуть в этот объект.
Добавить в класс EditorScripts.
X++:
void AA_NewWindow(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)
        treeNode.AOTnewWindow();
}

Последний раз редактировалось miklenew; 29.05.2008 в 12:17.
За это сообщение автора поблагодарили: Logger (4), kashperuk (5), AlGol (1), alex55 (1), Dima_Dima (1).
Старый 28.05.2008, 17:19  Ссылка на сообщение   #2  
Gustav is offline
Gustav
|F22268
Лучший по профессии 2009
Most Valuable Professional
 
1,659 / 821 (31) +++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 18
Ну, проапргейдил бы в том же первом посте или это в учебных (так сказать, эволюционных) целях?

Я пользуюсь на эту тему наработками Вани
Kashperuk Ivan: EditorScripts.addIns_OpenInAOT() script updateHO...
Kashperuk Ivan: AxGoToDeclarationI haven't posted in a while. W...

и "Сидаксом" Макса Белугина
[ANN] Sidax 0.3.6 - многоцелевая боковая панель для Axapta
За это сообщение автора поблагодарили: kashperuk (2).
Старый 28.05.2008, 17:29  Ссылка на сообщение   #3  
kashperuk is offline
kashperuk
SDET II, Dynamics AX
Аватар для kashperuk
Лучший по профессии 2009
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
 
3,657 / 1328 (52) ++++++++
Регистрация: 30.05.2004
Адрес: Копенгаген, Дания
Кстати, если это работает и не требует наличия перекрестных ссылок (вот в этом я сомневаюсь) - то это решение намного быстрее и элегантнее, чем мои наработки.

Завтра попробую поэкспериментировать с этим кодом.
За это сообщение автора поблагодарили: Gustav (11), miklenew (2).
Старый 28.05.2008, 17:40  Ссылка на сообщение   #4  
Gustav is offline
Gustav
|F22268
Лучший по профессии 2009
Most Valuable Professional
 
1,659 / 821 (31) +++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 18
Цитата:
Сообщение от kashperuk Посмотреть сообщение
...и не требует наличия перекрестных ссылок (вот в этом я сомневаюсь)...
Судя по другому топику и схожести идентификаторов в коде, они-таки требуются
Цитата:
Сообщение от miklenew Посмотреть сообщение
Для работы обязательно наличие перекрёстных ссылок.
Старый 28.05.2008, 18:02  Ссылка на сообщение   #5  
konopello is offline
konopello
Участник
 
550 / 43 (3) +++
Регистрация: 08.11.2005
Адрес: Беларусь
а куда в 4ке дели ParserClass?
Старый 28.05.2008, 18:44  Ссылка на сообщение   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Лучший по профессии 2009
Сотрудники Microsoft Dynamics
 
3,037 / 1131 (44) ++++++++
Регистрация: 16.01.2004
Адрес: Москва
нету его больше (поищите сообщение от Мариночки)
__________________
MaxBelugin@erpkb.com
Старый 28.05.2008, 19:02  Ссылка на сообщение   #7  
miklenew is offline
miklenew
Участник
Аватар для miklenew
Лучший по профессии 2009
MCBMSS
 
1,438 / 279 (12) ++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от Gustav Посмотреть сообщение
Ну, проапргейдил бы в том же первом посте или это в учебных (так сказать, эволюционных) целях?
Согласен. Отредактировал.
Цитата:
Сообщение от Gustav Посмотреть сообщение
Первая не может анализировать какой объект образовал переменную и открывать его. А мой код может.
Вторая понравилась. Спасибо. Буду пользоваться. Автору респект и уважуха.
Цитата:
Сообщение от Gustav Посмотреть сообщение
Как то ставил. Давно. Чёто не понравилось. Мож версия промежуточная была.
Завтра поставлю посмотрю.

Последний раз редактировалось miklenew; 28.05.2008 в 19:19.
Старый 28.05.2008, 19:07  Ссылка на сообщение   #8  
miklenew is offline
miklenew
Участник
Аватар для miklenew
Лучший по профессии 2009
MCBMSS
 
1,438 / 279 (12) ++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Кстати, если это работает и не требует наличия перекрестных ссылок (вот в этом я сомневаюсь) - то это решение намного быстрее и элегантнее, чем мои наработки.
Завтра попробую поэкспериментировать с этим кодом.
Требуются, при обращении к xRefNames.
tmpxRefReferences система сама хитро делает без ссылок.
Конструкция
X++:
    treeNode.AOTmakeXref(1);
    tmpxRefReferences = xRefCreate::makeTmp(infolog.lastxRef());
разрывает код на множество мелких кусочков.
За это сообщение автора поблагодарили: kashperuk (2).
Старый 28.05.2008, 20:25  Ссылка на сообщение   #9  
Logger is offline
Logger
Участник
 
953 / 317 (12) ++++++
Регистрация: 12.10.2004
Адрес: Москва
Огого !

в 3-ке тоже работает !

И без всяких перекрестных ссылок !
Старый 29.05.2008, 09:22  Ссылка на сообщение   #10  
miklenew is offline
miklenew
Участник
Аватар для miklenew
Лучший по профессии 2009
MCBMSS
 
1,438 / 279 (12) ++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от miklenew Посмотреть сообщение
Как то ставил. Давно. Чёто не понравилось. Мож версия промежуточная была.
Завтра поставлю посмотрю.
Что не понравилось в sidax-е:
1) нет русскоязычной версии.
2) нет хорошой доки к продукту.
Хоть продукт и серъёзный, работа была проделана огромная, но без этих двух вещей пользоваться наверно не буду. (Ни к чему не призываю, обидеть никого не хочу, просто это дело привычек).
Старый 29.05.2008, 12:00  Ссылка на сообщение   #11  
Gustav is offline
Gustav
|F22268
Лучший по профессии 2009
Most Valuable Professional
 
1,659 / 821 (31) +++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 18
Цитата:
Сообщение от miklenew Посмотреть сообщение
Что не понравилось в sidax-е:
1) нет русскоязычной версии.
2) нет хорошой доки к продукту.
...но без этих двух вещей пользоваться наверно не буду...
Вах! Неужели всплывающие подсказки к десятку кнопиков типа "Recently used projects" или "Go component" возводят такие непреодолимые преграды?
Старый 29.05.2008, 12:01  Ссылка на сообщение   #12  
kashperuk is offline
kashperuk
SDET II, Dynamics AX
Аватар для kashperuk
Лучший по профессии 2009
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
 
3,657 / 1328 (52) ++++++++
Регистрация: 30.05.2004
Адрес: Копенгаген, Дания
Немного модифицированная версия (исправлен небольшой баг) для АХ 2009 и АХ 4.0

X++:
public void addIns_OpenInAOT(Editor e)
{
    #AOT
    TreeNode            treeNode = TreeNode::findNode(e.path());
    xRefTmpReferences   xRefTmpReferences;
    Column              nCol = e.columnNo() + 1;
    Line                nLine = e.currentLineNo() + 1;
    ;
    treeNode.AOTmakeXref(1);
    xRefTmpReferences = xRefCreate::makeTmp(infolog.lastxRef());

    select firstonly xRefTmpReferences
        order by Column desc
        where xRefTmpReferences.line == nLine &&
              xRefTmpReferences.Column <= nCol;

    if (!xRefTmpReferences)
        return;

    treeNode = TreeNode::findNode(xRefTmpReferences.path());

    if (treeNode)
        treeNode.AOTnewWindow();
}
Еще раз спасибо, miklenew - очень понравился метод
За это сообщение автора поблагодарили: miklenew (3), alex55 (1).
Старый 29.05.2008, 12:21  Ссылка на сообщение   #13  
miklenew is offline
miklenew
Участник
Аватар для miklenew
Лучший по профессии 2009
MCBMSS
 
1,438 / 279 (12) ++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Немного модифицированная версия (исправлен небольшой баг) для АХ 2009 и АХ 4.0
Спасибо. Твоя версия мне больше понравилась не думал что path даст мне нужный результат.
Исправил в первоначальном посте. Для 3.0.
Разница между 4.0 и 3.0 не большая, похоже в 4.0 не много изменилось имя таблицы TmpxRefReferences стала xRefTmpReferences.
Старый 29.05.2008, 12:30  Ссылка на сообщение   #14  
kashperuk is offline
kashperuk
SDET II, Dynamics AX
Аватар для kashperuk
Лучший по профессии 2009
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
 
3,657 / 1328 (52) ++++++++
Регистрация: 30.05.2004
Адрес: Копенгаген, Дания
А вместо Sidax лучше попробуй Tabax - там точно есть поддержка нескольких языков + больше полезной функциональности и возможность использования плагинов (есть у меня пару интересных )
Старый 29.05.2008, 12:45  Ссылка на сообщение   #15  
miklenew is offline
miklenew
Участник
Аватар для miklenew
Лучший по профессии 2009
MCBMSS
 
1,438 / 279 (12) ++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от kashperuk Посмотреть сообщение
А вместо Sidax лучше попробуй Tabax - там точно есть поддержка нескольких языков + больше полезной функциональности и возможность использования плагинов (есть у меня пару интересных )
Спасибо. Tabax понравился буду использовать. Удобнее. Более не заметный.
А как плагины используешь? Добавляешь ещё одну кнопку в панель?
Старый 29.05.2008, 12:55  Ссылка на сообщение   #16  
kashperuk is offline
kashperuk
SDET II, Dynamics AX
Аватар для kashperuk
Лучший по профессии 2009
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
 
3,657 / 1328 (52) ++++++++
Регистрация: 30.05.2004
Адрес: Копенгаген, Дания
Вот здесь все написано
http://www.axaptapedia.com/Tabax

По сути, плагины бывают 2 типов:
- картинку нужно положить в определенную папочку (картинка обычно идет вместе с проектом)
- просто загрузить проект - картинка используется или стандартная или извратно хранится непосредственно в ХРО

Перечень плагинов доступных там на страничке тоже приведен
Старый 29.05.2008, 13:26  Ссылка на сообщение   #17  
belugin is offline
belugin
Участник
Аватар для belugin
Лучший по профессии 2009
Сотрудники Microsoft Dynamics
 
3,037 / 1131 (44) ++++++++
Регистрация: 16.01.2004
Адрес: Москва
Masia еще сделала возможность делать плагины ресурсами (актуально для Ax4, где общей шары у пользователей может не быть), но я пока не вливал эти изменения.

А вот фича - получения скриншота текущего окна внутри аксапты по Shift + кнопка "Копировать"

\Forms\Tabax\Methods\copyActiveWindowScreenShot
X++:
void copyActiveWindowScreenShot()
{
    Image image = new Image();
;
    image.captureWindow(topmost);
    image.clipboardCopy();
}
\Forms\Tabax\Designs\Design\[Group:toolbar]\Button:copyBut\Methods\clicked
X++:
void clicked()
{
    SysContextMenu context;
    TextBuffer buf=new TextBuffer();
    TreeNode node;
    boolean first=true;
    ;
    if (WinApi::isShiftButtonDown() && !WinApi::isControlButtonDown())
    {
        element.copyActiveWindowScreenShot();
    }
    else
    {
        if (element.currentFormRun())
        {
            buf.appendText(element.AxPath_fromFormRun(element.currentFormRun()));
            buf.toClipboard();
        }
        else
        {
            context = element.currentSysContextMenu();
            if (hasSecurityKeyAccess(securityKeyNum(SysDevelopment), AccessType::Edit) && context)
            {
                node = context.first();
                while(node)
                {
                    buf.appendText(
                        (!first ? "\r\n" :"")
                        +
                        (WinApi::isControlButtonDown() ?
                            (WinApi::isShiftButtonDown() ?
                                element.AxPath_fromTreeNode(node)
                                :
                                node.treeNodePath()
                            )
                            :
                            node.treeNodeName()
                        )
                    );
                    node=context.next();
                    first=false;
                }
                context.finalize();
                buf.toClipboard();
            }
        }
    }
}
__________________
MaxBelugin@erpkb.com
За это сообщение автора поблагодарили: alex55 (1).
Старый 29.05.2008, 16:44  Ссылка на сообщение   #18  
Logger is offline
Logger
Участник
 
953 / 317 (12) ++++++
Регистрация: 12.10.2004
Адрес: Москва
А как в этом случае можно переписать код скрипта gotoDeclaration ?
Т.е. не открыть окно с объявлением типа, а перейти туда где объявлена соответствующая переменная ?
Старый 29.05.2008, 17:02  Ссылка на сообщение   #19  
belugin is offline
belugin
Участник
Аватар для belugin
Лучший по профессии 2009
Сотрудники Microsoft Dynamics
 
3,037 / 1131 (44) ++++++++
Регистрация: 16.01.2004
Адрес: Москва
xppscanner + собственный синтаксический разбор
__________________
MaxBelugin@erpkb.com
Старый 06.06.2010, 17:06  Ссылка на сообщение   #20  
alex55 is offline
alex55
MCBMSS
MCBMSS
 
158 / 75 (3) ++++
Регистрация: 13.02.2007
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
А как в этом случае можно переписать код скрипта gotoDeclaration ?
Т.е. не открыть окно с объявлением типа, а перейти туда где объявлена соответствующая переменная ?
AXGoToDeclarationXRef - утилита перехода к объявлению переменной
 
Теги
editor script, axapta

Реклама

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открыть дизайн формы в режиме Edit из кода arnold DAX: Программирование 11 27.11.2008 16:20
Размер шрифта в окне редактора кода Jox DAX: Администрирование 1 04.06.2008 18:51
Не могу открыть объект в 1с. Tolikv DAX: Программирование 13 17.05.2007 09:41
Вебинтерфейс. Создание строк, их выбор. Отркытие страницы в новом окне IvanS DAX: Программирование 3 27.10.2006 10:54
проблема с настройкой штрихового кода Nic DAX: Функционал 4 27.12.2004 09:04
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Рейтинг@Mail.ru Rambler's Top100
Часовой пояс GMT +4, время: 11:18.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.