ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
フォーラム一覧   -   トピック一覧
   超ビギナー
     Treeのアイテム移動の制御
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
bibiru
投稿日時: 2008-5-22 13:41
お馴染みさん
登録日: 2008-5-15
居住地:
投稿: 16
Treeのアイテム移動の制御
お世話になっております。

Treeのアイテム移動について質問があります。

通常、Treeコンポーネントのプロパティ、dropEnabled、dragEnabled、dropEnabledをTrueで実現できるかと思います。

以下のようなXMLでTreeを作成して、id=node_0と同じ階層にはアイテム移動不可で、その他のアイテムには移動可のような事は出来るのでしょうか?

<result>
	<node id="node_0" label="素材" value="node_0">
		<node id="node_1" label="node_1" value="node_1">
			<node id="node_1_1" isBranch="true" label="node_1_1" value="node_1_1"></node>
		<node id="node_2" label="node_2" value="node_2">
			<node id="node_2_1" isBranch="true" label="node_2_1" value="node_2_1"></node>
		</node>
		<node id="node_3" label="node_3" value="node_3">
			<node id="node_3_1" isBranch="true" label="node_3_1" value="node_3_1"></node>
		</node>
		<node id="node_4" label="node_4" value="node_4">
			<node id="node_4_1" isBranch="true" label="node_4_1" value="node_4_1"></node>
		</node>
	</node>
</result>
neworder
投稿日時: 2008-5-29 20:42
ご主人様
登録日: 2007-7-14
居住地: 東京
投稿: 176
Re: Treeのアイテム移動の制御
アイデアレベルですが、dragDrop イベントでチェックすればいいかと思います。
Tree タグのところで
dragDrop="dragDrop(event)" dragEnter="dragOver(event)" dragOver="dragOver(event)"
として、
import mx.controls.listClasses.IListItemRenderer;
import mx.events.DragEvent;
private function dragDrop(event:DragEvent):void
{
    if (isDropForbidden(event))
        event.preventDefault();
}
private function dragOver(event:DragEvent):void
{
    if (isDropForbidden(event))
    {
        var tree:Tree = event.currentTarget as Tree;
        tree.hideDropFeedback(event);
        event.preventDefault();
    }
}
private function isDropForbidden(event:DragEvent):Boolean
{
    var tree:Tree = event.currentTarget as Tree;
    var n:int = tree.calculateDropIndex(event);
    var renderer:IListItemRenderer = tree.indexToItemRenderer(n);
    if (renderer)
    {
        var xml:XML = renderer.data as XML;
        var parent:XML = xml.parent();
        if (parent && parent.@id == "node_0")
            return true;
    }
    return false;
}

これで親が node_0 となるような挿入が禁止されます。
実際にはいろいろ修正が必要かもしれません。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を