18.09.2022, 00:31 | #1 |
Участник
|
Текущий Элемент дерева АОТ
Скажите, например если открыто дерево АОТ и в нем выбрана какая-то форма, то как програмно найти название этой формы?
Пробовал такой код: X++: HWND hTree, h; hTree = WinAPI::findWindowEx(handle, 0, 'AxPaneWnd', ''); h = WinAPI::sendMessageEx(hTree, 0x1100 + 10, 0x0009, 0); hTree - нашелся. Это панель с деревом (или само дерево). h - не находит. В интернете пишут что в windows api для нахождения текущего элемента дерева используется функция TreeView_GetSelection(handle). Эта функция конвертируется в функцию sendMessageEx(hTree, 0x1100 + 10, 0x0009, 0). Но она возвращает ноль у меня. |
|
18.09.2022, 09:35 | #2 |
Участник
|
А задача строго ограничивает в качестве способа получения этой информацией только использование API Windows?
Просто изнутри Аксапты всё это проще делается отражением с использованием TreeNode. Задачи две:
А как определяются типы можно посмотреть по перекрестным ссылкам на этот класс. В стандарте, использование есть в классе SysContextMenuAOT и форме экспорта. Кстати, в некоторых местах даже используется не напрямую LastAotSelection, а создают SysContextMenuAOT и используют его метод first. Если установлен AxAssist, то в его форме и классе много примеров можно найти. |
|
18.09.2022, 11:49 | #3 |
Участник
|
Посмотрел класс LastAotSelection. Он выдает выделенные элементы дерева последнего окна. Мне бы хотелось создать функцию в которую если передать дескриптор окна, то она определит какой элемент дерева в нем выделен. Т.е. не только для последнего окна, но и для любого, какое мне понадобится.
Да нет, как получится. |
|
18.09.2022, 15:15 | #4 |
Участник
|
Я так подумал - наверное и класс LastAotSelection подойдет, спс.
|
|