久々のflex mx:Treeのネタです。といっても、非常に基本的なことです。
Treeのアイテムを開いたり、閉じたりするには?

これ、開くには以前、flex:Treeで自動的にフォルダを展開させるには でTreeのアイテムにドラッグ&ドロップでドロップしようとしたときに、
自動的に開くようにするということで述べましたが、今回は閉じるには?を調べました。
久々のflex mx:Treeのネタです。といっても、非常に基本的なことです。

というのも、デフォルトで「閉じる」「開く」は矢印をクリックすればできるのですが、やっぱり、フォルダとして機能している場合、つまり、他のアイテムの親としてしか機能しないアイテムをクリックすると、開いたり、閉じたりしてほしいなーと思ったのがきっかけです。

だって、矢印が小さいんですもん。

最近、できるとはわかっているよりも、できるのか?できないのか?
のほうを優先してしまい、結構、基本的な部分がはて?どうやるんだ???のままでほったらかしなので。

さて、話は戻って、Treeで、「閉じる」、「開く」を実装するためには、
もちろん、「開く」、「閉じる」のメソッドが必要ですが、「今は開いているの?、閉じているの?」がわからないといけないですよね。

さて、それでは、クリックのイベントで処理をおこなうようにしましょう。

tree.addEventListener(ListEvent.ITEM_CLICK,_fireClickItem);

次に、クリックされた時の処理は

protected function _fireClickItem(e:ListEvent):void{
  var tree:Tree = e.currentTarget as Tree;
  var obj:Object = tree.selectedItem;
  if(!tree.isItemOpen(item.selectedItem)){
    tree.expandItem(obj,true,true);
  }
  else{
    tree.expandChildrenOf(obj,false);
  }
}

さて、閉じるときと、開くときでことなったメソッドを使っています。
expandChidrenOf(item,boolean)のドキュメントをみると
“指定したアイテムの配下にあるすべてのツリーを開くか、または閉じます。”
とあります。
すべて、開かれても困るので、開くときは、expandItemを使っていまし、
閉じるならすべて閉じたほうがいいかなと使い分けています。

この辺の動作は好みかもしれませんが、深ーいツリーで、やっぱり浅い階層のものを見るときに「閉じて」、「開く」ってことを私自身やってしまうので・・・

でも、ふつうは両方ともexpandItemでいいのでしょうね。
Windowsのエクスプローラもそうなっていることですし・・・・

関連記事

Leave a Reply

Spam protection by WP Captcha-Free

RSS
Add to Google

カスタム検索
ソフトウェア&ライブラリ


ライブラリ
airxmail(en)
AIR版メール送受信ライブラリ
airxzip
AIR版ZIP圧縮・解凍ライブラリ
カレンダー
2009年5月
« 4月   6月 »
 123
45678910
11121314151617
18192021222324
25262728293031
アーカイブ
にほんブログ村 IT技術ブログへ