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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.09.2022, 00:31   #1  
n_yury is offline
n_yury
Участник
 
22 / 12 (1) ++
Регистрация: 19.02.2013
Текущий Элемент дерева АОТ
Скажите, например если открыто дерево АОТ и в нем выбрана какая-то форма, то как програмно найти название этой формы?
Пробовал такой код:
X++:
HWND    hTree, h;
hTree = WinAPI::findWindowEx(handle, 0, 'AxPaneWnd', '');
h = WinAPI::sendMessageEx(hTree, 0x1100 + 10, 0x0009, 0);
handle - форма с деревом.
hTree - нашелся. Это панель с деревом (или само дерево).
h - не находит.
В интернете пишут что в windows api для нахождения текущего элемента дерева используется функция TreeView_GetSelection(handle). Эта функция конвертируется в функцию sendMessageEx(hTree, 0x1100 + 10, 0x0009, 0). Но она возвращает ноль у меня.
Старый 18.09.2022, 09:35   #2  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
А задача строго ограничивает в качестве способа получения этой информацией только использование API Windows?

Просто изнутри Аксапты всё это проще делается отражением с использованием TreeNode.
Задачи две:
  1. Получить текущий TreeNode (точнее выделенные объекты, так как выделено их может быть более одного).
  2. Понять что это за объект и, в зависимости от его типа, анализ его свойств.
Для первой задачи есть системный класс LastAotSelection.
А как определяются типы можно посмотреть по перекрестным ссылкам на этот класс.

В стандарте, использование есть в классе SysContextMenuAOT и форме экспорта. Кстати, в некоторых местах даже используется не напрямую LastAotSelection, а создают SysContextMenuAOT и используют его метод first.
Если установлен AxAssist, то в его форме и классе много примеров можно найти.
Старый 18.09.2022, 11:49   #3  
n_yury is offline
n_yury
Участник
 
22 / 12 (1) ++
Регистрация: 19.02.2013
Посмотрел класс LastAotSelection. Он выдает выделенные элементы дерева последнего окна. Мне бы хотелось создать функцию в которую если передать дескриптор окна, то она определит какой элемент дерева в нем выделен. Т.е. не только для последнего окна, но и для любого, какое мне понадобится.
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
А задача строго ограничивает в качестве способа получения этой информацией только использование API Windows?
Да нет, как получится.
Старый 18.09.2022, 15:15   #4  
n_yury is offline
n_yury
Участник
 
22 / 12 (1) ++
Регистрация: 19.02.2013
Я так подумал - наверное и класс LastAotSelection подойдет, спс.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
как программно убрать доступ на элемент у опред. группы oleggy DAX: Программирование 1 27.11.2020 15:06
Как найти, где в АХ2012 используется Элемент АОТ Skolos DAX: Программирование 3 28.02.2018 16:43
АОТ для бизнес аналитиков Evgeniy2020 DAX: Функционал 63 31.08.2010 18:16
Путь от узла дерева к корню Dronas DAX: Программирование 2 29.09.2008 08:44
вывод дерева из АОТа Focusnik DAX: Программирование 7 11.09.2005 18:46
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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