13.02.2008, 10:31 | #1 |
Участник
|
Уровень узла в дереве?
В классе FormTreeItem (узел для дерева) никак не могу найти номер уровня.
В отладчике я вижу путь (\vewrv\verwvwewe\evwvr). На косые чёрты опираться для нахождения уровня не правильно. Можно конечно перебором вверх узнавая родителя. И скорее всего так и прийдётся. Но неужто нет более простого варианта. |
|
13.02.2008, 11:07 | #2 |
Участник
|
Как вариант при построении дерева что-то мудрить. Например, в data его писать.
Но я бы не стал на это закладыватся. Как задача звучит?
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
13.02.2008, 11:24 | #3 |
Участник
|
Да понятно, что tmp таблицу можно создать писать туда все узлы и уровень.
Можно и так как я писал выше. Но странно что разработчике в этом классе не сделали метод level. Жалько. |
|
13.02.2008, 15:09 | #4 |
NavAx
|
Не пробовал, но если FormTreeItem.toString() вернет \vewrv\verwvwewe\evwvr, то вот номер уровня
print(conlen(str2con(FormTreeItem.toString(),"\\"))); |
|
13.02.2008, 15:15 | #5 |
Участник
|
X++: int LevelItem(int _treeItemNum) { int treeItemNumLoc; int level; ; treeItemNumLoc = _treeItemNum; while (treeItemNumLoc) { treeItemNumLoc = tree.getParent(treeItemNumLoc); if (treeItemNumLoc) level++; } return level; } |
|
13.02.2008, 16:13 | #6 |
Moderator
|
до кучи
Когда-то ковырялся со списком всех пунктов меню. Тоже зачем-то нужен был уровень. Написал маленький джобик с использованием рекурсии, причём получившаяся компактность поразила. Может быть, на что сгодится (например, уровни надо куда-то в таблицу нагенерить). Уровень иерархии hLevel по ходу вычисляется простой инкрементацией "туда-сюда". Признаться, сейчас не сразу смогу сообразить, как это всё работает, но работает
X++: static void Job_MenusList(Args _args) { int row, hLevel; TreeNode treeNode = new xInfo().rootNode().AOTfindChild('Menus'); void nextNode( treeNode _tn) { ; hLevel++; _tn = _tn.AOTfirstChild(); while (_tn ) { row++; info(strfmt('%1 -- %2 -- %3', row, hLevel, _tn.treeNodePath())); nextNode(_tn ); _tn = _tn.AOTnextSibling(); } hLevel--; } ; nextNode( treeNode ); } |
|
14.02.2008, 10:48 | #7 |
Участник
|
Тоже до кучи
A я когда то делал так.
Бежит по всем узлам репозитария. Легко на основе этого свой нестондартный поиск написать, если надо конечно. |
|
|
Похожие темы | ||||
Тема | Ответов | |||
AX 2009 создание узла в WSS | 7 | |||
Пропали пункты меню в дереве настройки прав доступа | 10 | |||
уровень доступа на форму | 23 | |||
поиск узла в проекте | 8 | |||
Как посмотреть уровень изоляции | 17 |
|