Показать сообщение отдельно
Старый 16.02.2007, 13:38   #1  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от 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);
    }
}

Последний раз редактировалось EVGL; 16.02.2007 в 13:42.
За это сообщение автора поблагодарили: rumpleteazer (1), Logger (1), Lucky13 (1), gl00mie (2).