16.02.2007, 13:21 | #1 |
Участник
|
Как поменять порядок элементов в Tree
Как в элементе Tree программно изменять порядок элементов. У Tree есть метод moveItem, но он перемещает элементы только в начало и в конец, а нужно поместить после определенного элемента.
Задача такая: есть дерево (для простоты пусть в нем только один уровень). Нужно чтобы при нажатии кнопки "вверх" выделенный элемент перемещался вверх, а кнопки "вниз" соответственно "вниз". Было бы лучше если бы можно было перемещать элементы как в АОТ (alt+стрелка), но по-моему это невозможно. |
|
16.02.2007, 13:37 | #2 |
Участник
|
а если попробовать удалить перемещаемый елемент и вставить его же до/после предыдущего/следующего?
ПС: хотя на сколько помнится, элементы дерева выводятся по алфавиту вроде. Последний раз редактировалось Jony; 16.02.2007 в 13:40. |
|
16.02.2007, 13:38 | #3 |
Banned
|
Цитата:
Смотрите примеры. Скажем, \Classes\CCFormTreeDatasource\moveTreeItem. Или вот (\Classes\SysFormTreeControl\moveTreeItem): X++: static client server void moveVertical(FormTreeControl _formTreeControl, boolean _upDown) { TreeItemIdx treeItemIdx; TreeItemIdx afterIdx; ; treeItemIdx = _formTreeControl.getFirstSelected(); if (treeItemIdx) { if (_upDown) { afterIdx = _formTreeControl.getPrevSibling(treeItemIdx); if (afterIdx) { afterIdx = _formTreeControl.getPrevSibling(afterIdx); if (afterIdx) { treeItemIdx = _formTreeControl.moveItem(treeItemIdx, _formTreeControl.getParent(treeItemIdx), afterIdx); } else { treeItemIdx = _formTreeControl.moveItem(treeItemIdx, _formTreeControl.getParent(treeItemIdx), FormTreeAdd::First); } } } else { afterIdx = _formTreeControl.getNextSibling(treeItemIdx); if (afterIdx) { treeItemIdx = _formTreeControl.moveItem(treeItemIdx, _formTreeControl.getParent(treeItemIdx), afterIdx); } } _formTreeControl.select(treeItemIdx); } } Последний раз редактировалось EVGL; 16.02.2007 в 13:42. |
|
|
За это сообщение автора поблагодарили: rumpleteazer (1), Logger (1), Lucky13 (1), gl00mie (2). |
16.02.2007, 14:29 | #4 |
Участник
|
Действительно, последний параметр имеет тип int, а я подумал, что это enum, судя по значению по умолчанию. Спасибо, EVGL
|
|