AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 28.05.2008, 16:18   #1  
miklenew is offline
miklenew
Участник
miklenew's Avatar
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 438 (18) +++++++
Join Date: 10.07.2006
Location: г. Ликино-Дулёво
Открыть в новом окне объект из кода
Если кликнуть в какой-нибудь участок кода и выбрать 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();
}

Last edited by miklenew; 29.05.2008 at 12:17.
This post has been rated by: mazzy (2), AlGol (1), kashperuk (5), Logger (4), Eldar9x (5), alex55 (1), Dima_Dima (1), Kabardian (5).
Old 28.05.2008, 17:19   #2  
Gustav is offline
Gustav
Moderator
Gustav's Avatar
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Join Date: 24.01.2006
Location: Санкт-Петербург
Blog Entries: 19
Ну, проапргейдил бы в том же первом посте или это в учебных (так сказать, эволюционных) целях?

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

и "Сидаксом" Макса Белугина
[ANN] Sidax 0.3.6 - многоцелевая боковая панель для Axapta
This post has been rated by: kashperuk (2).
Old 28.05.2008, 17:29   #3  
kashperuk is offline
kashperuk
Участник
kashperuk's Avatar
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Join Date: 30.05.2004
Location: Atlanta, GA, USA
Кстати, если это работает и не требует наличия перекрестных ссылок (вот в этом я сомневаюсь) - то это решение намного быстрее и элегантнее, чем мои наработки.

Завтра попробую поэкспериментировать с этим кодом.
This post has been rated by: Gustav (11), miklenew (2).
Old 28.05.2008, 17:40   #4  
Gustav is offline
Gustav
Moderator
Gustav's Avatar
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Join Date: 24.01.2006
Location: Санкт-Петербург
Blog Entries: 19
Quote:
Originally Posted by kashperuk View Post
...и не требует наличия перекрестных ссылок (вот в этом я сомневаюсь)...
Судя по другому топику и схожести идентификаторов в коде, они-таки требуются
Quote:
Originally Posted by miklenew View Post
Для работы обязательно наличие перекрёстных ссылок.
Old 28.05.2008, 18:02   #5  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Join Date: 08.11.2005
Location: Минск
а куда в 4ке дели ParserClass?
Old 28.05.2008, 18:44   #6  
belugin is offline
belugin
Участник
belugin's Avatar
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Join Date: 16.01.2004
Blog Entries: 5
нету его больше (поищите сообщение от Мариночки)
Old 28.05.2008, 19:02   #7  
miklenew is offline
miklenew
Участник
miklenew's Avatar
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 438 (18) +++++++
Join Date: 10.07.2006
Location: г. Ликино-Дулёво
Quote:
Originally Posted by Gustav View Post
Ну, проапргейдил бы в том же первом посте или это в учебных (так сказать, эволюционных) целях?
Согласен. Отредактировал.
Quote:
Originally Posted by Gustav View Post
Первая не может анализировать какой объект образовал переменную и открывать его. А мой код может.
Вторая понравилась. Спасибо. Буду пользоваться. Автору респект и уважуха.
Quote:
Originally Posted by Gustav View Post
Как то ставил. Давно. Чёто не понравилось. Мож версия промежуточная была.
Завтра поставлю посмотрю.

Last edited by miklenew; 28.05.2008 at 19:19.
Old 28.05.2008, 19:07   #8  
miklenew is offline
miklenew
Участник
miklenew's Avatar
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 438 (18) +++++++
Join Date: 10.07.2006
Location: г. Ликино-Дулёво
Quote:
Originally Posted by kashperuk View Post
Кстати, если это работает и не требует наличия перекрестных ссылок (вот в этом я сомневаюсь) - то это решение намного быстрее и элегантнее, чем мои наработки.
Завтра попробую поэкспериментировать с этим кодом.
Требуются, при обращении к xRefNames.
tmpxRefReferences система сама хитро делает без ссылок.
Конструкция
X++:
    treeNode.AOTmakeXref(1);
    tmpxRefReferences = xRefCreate::makeTmp(infolog.lastxRef());
разрывает код на множество мелких кусочков.
This post has been rated by: kashperuk (2), Logger (3).
Old 28.05.2008, 20:25   #9  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,996 / 3293 (117) ++++++++++
Join Date: 12.10.2004
Location: Москва
Blog Entries: 2
Огого !

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

И без всяких перекрестных ссылок !
Old 29.05.2008, 09:22   #10  
miklenew is offline
miklenew
Участник
miklenew's Avatar
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 438 (18) +++++++
Join Date: 10.07.2006
Location: г. Ликино-Дулёво
Quote:
Originally Posted by miklenew View Post
Как то ставил. Давно. Чёто не понравилось. Мож версия промежуточная была.
Завтра поставлю посмотрю.
Что не понравилось в sidax-е:
1) нет русскоязычной версии.
2) нет хорошой доки к продукту.
Хоть продукт и серъёзный, работа была проделана огромная, но без этих двух вещей пользоваться наверно не буду. (Ни к чему не призываю, обидеть никого не хочу, просто это дело привычек).
Old 29.05.2008, 12:00   #11  
Gustav is offline
Gustav
Moderator
Gustav's Avatar
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Join Date: 24.01.2006
Location: Санкт-Петербург
Blog Entries: 19
Quote:
Originally Posted by miklenew View Post
Что не понравилось в sidax-е:
1) нет русскоязычной версии.
2) нет хорошой доки к продукту.
...но без этих двух вещей пользоваться наверно не буду...
Вах! Неужели всплывающие подсказки к десятку кнопиков типа "Recently used projects" или "Go component" возводят такие непреодолимые преграды?
Old 29.05.2008, 12:01   #12  
kashperuk is offline
kashperuk
Участник
kashperuk's Avatar
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Join Date: 30.05.2004
Location: Atlanta, GA, USA
Немного модифицированная версия (исправлен небольшой баг) для АХ 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 - очень понравился метод
This post has been rated by: miklenew (3), alex55 (1).
Old 29.05.2008, 12:21   #13  
miklenew is offline
miklenew
Участник
miklenew's Avatar
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 438 (18) +++++++
Join Date: 10.07.2006
Location: г. Ликино-Дулёво
Quote:
Originally Posted by kashperuk View Post
Немного модифицированная версия (исправлен небольшой баг) для АХ 2009 и АХ 4.0
Спасибо. Твоя версия мне больше понравилась не думал что path даст мне нужный результат.
Исправил в первоначальном посте. Для 3.0.
Разница между 4.0 и 3.0 не большая, похоже в 4.0 не много изменилось имя таблицы TmpxRefReferences стала xRefTmpReferences.
Old 29.05.2008, 12:30   #14  
kashperuk is offline
kashperuk
Участник
kashperuk's Avatar
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Join Date: 30.05.2004
Location: Atlanta, GA, USA
А вместо Sidax лучше попробуй Tabax - там точно есть поддержка нескольких языков + больше полезной функциональности и возможность использования плагинов (есть у меня пару интересных )
Old 29.05.2008, 12:45   #15  
miklenew is offline
miklenew
Участник
miklenew's Avatar
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 438 (18) +++++++
Join Date: 10.07.2006
Location: г. Ликино-Дулёво
Quote:
Originally Posted by kashperuk View Post
А вместо Sidax лучше попробуй Tabax - там точно есть поддержка нескольких языков + больше полезной функциональности и возможность использования плагинов (есть у меня пару интересных )
Спасибо. Tabax понравился буду использовать. Удобнее. Более не заметный.
А как плагины используешь? Добавляешь ещё одну кнопку в панель?
Old 29.05.2008, 12:55   #16  
kashperuk is offline
kashperuk
Участник
kashperuk's Avatar
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Join Date: 30.05.2004
Location: Atlanta, GA, USA
Вот здесь все написано
http://www.axaptapedia.com/Tabax

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

Перечень плагинов доступных там на страничке тоже приведен
Old 29.05.2008, 13:26   #17  
belugin is offline
belugin
Участник
belugin's Avatar
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Join Date: 16.01.2004
Blog Entries: 5
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();
            }
        }
    }
}
This post has been rated by: alex55 (1).
Old 29.05.2008, 16:44   #18  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,996 / 3293 (117) ++++++++++
Join Date: 12.10.2004
Location: Москва
Blog Entries: 2
А как в этом случае можно переписать код скрипта gotoDeclaration ?
Т.е. не открыть окно с объявлением типа, а перейти туда где объявлена соответствующая переменная ?
Old 29.05.2008, 17:02   #19  
belugin is offline
belugin
Участник
belugin's Avatar
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Join Date: 16.01.2004
Blog Entries: 5
xppscanner + собственный синтаксический разбор
Old 06.06.2010, 17:06   #20  
alex55 is offline
alex55
MCTS
MCBMSS
 
224 / 145 (5) +++++
Join Date: 13.02.2007
Location: Москва
Quote:
Originally Posted by Logger View Post
А как в этом случае можно переписать код скрипта gotoDeclaration ?
Т.е. не открыть окно с объявлением типа, а перейти туда где объявлена соответствующая переменная ?
AXGoToDeclarationXRef - утилита перехода к объявлению переменной
Tags
ax2012, ax2012r2, axapta, editor script

 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Размер шрифта в окне редактора кода Jox DAX: Администрирование 3 09.11.2022 11:49
Открыть дизайн формы в режиме Edit из кода arnold DAX: Программирование 11 27.11.2008 16:20
Не могу открыть объект в 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

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 04:33.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.