Цитата:
Сообщение от
Lucky13
У Tree есть метод moveItem, но он перемещает элементы только в начало и в конец
Это - неправда. У метода - три параметра.
Смотрите примеры. Скажем, \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);
}
}