AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.02.2007, 13:21   #1  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Как поменять порядок элементов в Tree
Как в элементе Tree программно изменять порядок элементов. У Tree есть метод moveItem, но он перемещает элементы только в начало и в конец, а нужно поместить после определенного элемента.
Задача такая: есть дерево (для простоты пусть в нем только один уровень). Нужно чтобы при нажатии кнопки "вверх" выделенный элемент перемещался вверх, а кнопки "вниз" соответственно "вниз". Было бы лучше если бы можно было перемещать элементы как в АОТ (alt+стрелка), но по-моему это невозможно.
Старый 16.02.2007, 13:37   #2  
Jony is offline
Jony
Участник
 
99 / 22 (1) +++
Регистрация: 25.06.2003
Адрес: г. Барнаул
а если попробовать удалить перемещаемый елемент и вставить его же до/после предыдущего/следующего?

ПС: хотя на сколько помнится, элементы дерева выводятся по алфавиту вроде.

Последний раз редактировалось Jony; 16.02.2007 в 13:40.
Старый 16.02.2007, 13:38   #3  
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).
Старый 16.02.2007, 14:29   #4  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Действительно, последний параметр имеет тип int, а я подумал, что это enum, судя по значению по умолчанию. Спасибо, EVGL
Теги
control, moveitem, tree

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
перебор элементов в Tree Weez DAX: Программирование 40 16.04.2013 15:46
Как получить метки всех элементов всех форм (DAX 4) Qaz Qwerty DAX: Программирование 1 09.08.2008 05:39
Изменение цвета элементов управления Lucky13 DAX: Программирование 1 02.12.2005 10:40
Tree. Проблема с data() alexbn DAX: Программирование 2 03.11.2005 14:39
Динамическое добавление элементов в отчет Maxim Gorbunov DAX: База знаний и проекты 1 17.01.2002 14:48

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:09.