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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.02.2012, 19:50   #1  
Ar is offline
Ar
Участник
Аватар для Ar
Злыдни
 
21 / 20 (1) +++
Регистрация: 27.06.2005
Адрес: Москва
? Как в коде получить ProjectNode проекта, в котором было вызвано контекстное меню?
Субж (см. вопрос).
SysContextMenu возвращает TreeNode из AOT, а нужен именно проект.

Можно идеологию, запрограммирую сам
Старый 07.02.2012, 22:46   #2  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Штатно, по-моему, никак - если только через Win32 API как-то шерстить окошки, из заголовка окна проекта получать его название и дальше искать по нему...
Старый 07.02.2012, 22:49   #3  
Ar is offline
Ar
Участник
Аватар для Ar
Злыдни
 
21 / 20 (1) +++
Регистрация: 27.06.2005
Адрес: Москва
Тоже склоняюсь к такому варианту... Если никто не подскажет иного, так и сделаю.
Старый 10.02.2012, 11:41   #4  
Ar is offline
Ar
Участник
Аватар для Ar
Злыдни
 
21 / 20 (1) +++
Регистрация: 27.06.2005
Адрес: Москва
Пока не нашёл ничего лучшего, как перебрать все окна текущего Workspace'а. Первым попавшимся проектным окном и будет верхнее в Z-последовательности окно.
X++:
    HWND        hWndParent = WinAPI::findWindowEx(infolog.hWnd(), 0, 'MDIClient', '');
    HWND        hWnd;
    str         caption;
    str         projName;
    ;

    // активные/открытые проекты
    for (hWnd = WinAPI::findWindowEx(hWndParent, 0, 'AxMDIChildWindow', '');
         hWnd;
         hWnd = WinAPI::findWindowEx(hWndParent, hWnd, 'AxMDIChildWindow', ''))
    {
        caption = WinAPI::getWindowText(hWnd);
        if (strStartsWith(caption, "@SYS4534"))
        {
            projName = strDel(caption, 1, strLen("@SYS4534") + 1);
            //WinAPI::flashWindowEx(hWnd, 1, 5, 200);
            break;
        }
    }
Для своих целей я не ограничиваюсь первым найденным проектом, а ищу их все, заполняю в ComboBox, делаю верхний проект выбранным в ComboBox'е, а затем предлагаю юзеру самому выбрать проект:
X++:
    for (hWnd = WinAPI::findWindowEx(hWndParent, 0, 'AxMDIChildWindow', '');
         hWnd;
         hWnd = WinAPI::findWindowEx(hWndParent, hWnd, 'AxMDIChildWindow', ''))
    {
        caption = WinAPI::getWindowText(hWnd);
        if (strStartsWith(caption, "@SYS4534"))
            Projects.add(strDel(caption, 1, strLen("@SYS4534") + 1));
    }
    Projects.selection(0);

Последний раз редактировалось Ar; 10.02.2012 в 11:47. Причина: дополнение
Теги
projectnode, проекты

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Evgeny Arlionak: Ссылки на главное меню: как получить? Blog bot DAX Blogs 2 02.02.2009 18:14
Контекстное меню. art DAX: Программирование 0 17.06.2002 10:25
Работа с главным меню в Axapta Alexey DAX: Программирование 0 04.01.2002 23:31
Удаление проекта Maxim Gorbunov DAX: Программирование 0 24.12.2001 23:04
Наброски команды IT2B Елена Сысовская DAX: Прочие вопросы 6 15.12.2001 22:36

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:23.