Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Из одного XML в другой XML через mx:Tree (http://www.flasher.ru/forum/showthread.php?t=169270)

maksimov 01.10.2011 19:05

Из одного XML в другой XML через mx:Tree
 
Есть два mx:Tree. Как сделать так, что бы когда я мышкой перетаскиваю элемент из одного, в другой - в другом этот элемент появлялся, а в первом - не исчезал?

GBee 01.10.2011 20:54

http://livedocs.adobe.com/flex/3/htm...ragdrop_4.html

maksimov 02.10.2011 01:56

Цитата:

Сообщение от GBee (Сообщение 1036069)

там этого нет

Добавлено через 1 час 4 минуты
И ещё пара вопросов:

1. если нод пуст - добавить в него что-либо драг-энд-дропом невозможно. как это исправить?
2. как запретить перетаскивание элементов в определённые(изборочные) ноды?

GBee 02.10.2011 10:28

Конечно там нет четко вашего варианта, но есть направление куда копать, или хотя бы как попробовать.
Ваша дополнительная пара вопросов там тоже есть.
Вы попробовали то, что есть в разделе Dragging and dropping in the same control?

maksimov 02.10.2011 12:30

С первым вопросом разобрался. Необходимо выставить dragEnabled - true, а dragMoveEnabled - false.
Со вторым тоже.Необходимо тегу добавить атрибут isBranch="true".
Остался третий вопрос. =(

Добавлено через 50 часов 59 минут
Пока что смог запретить перетаскивание элементов в определённые(изборочные) ноды, только вот так:

Код AS3:

override public function addChildAt(parent:Object, child:Object, index:int, model:Object=null):Boolean
{
        if (!parent || parent.name() == "vasya" || parent.name() == "petya")
                return false;
        else
                return super.addChildAt(parent, child, index, model);
}

Но это плохой метод: благодаря нему, при попытке перетащить элемент в запрещённую ноду, он перетаскивается, но там не появляется(то есть, исчезает). А необходимо, что бы реакция была бы такая же, как при попытке перенести в недоступную область(курсор получает иконку недоступности, при отпускании кнопки мышки, элемент возвращается назад,...).

Подскажите, как это сделать? =(


И ещё вопрос:
Сейчас в mx:Tree, можно перетащить элемент в узел, только если он раскрыт. Это можно как-то исправить?

maksimov 05.10.2011 16:28

Почти нашел. На dragOver вешается следующая функция:

Код AS3:

protected function code_dragOverHandler(event:DragEvent):void
{       
        event.preventDefault();
 
        event.currentTarget.showDropFeedback(event);
        if (XML(event.dragSource.dataForFormat("treeItems")).name() == "trulala")
        {
                // Drag not allowed.
                DragManager.showFeedback(DragManager.NONE);
                return;
        }
 
        DragManager.showFeedback(DragManager.COPY);
}


Работает только если внутри тега "trulala" есть некое содержимое. Если же тег одинарный - в event.dragSource.dataForFormat("treeItems")) пусто. =(


Часовой пояс GMT +4, время: 20:01.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.