« PEARマネージャおよびHTTP_RequestをD4PHPにインストール | トップページ | Queryの値をComboBoxへ »

2007年7月30日 (月)

TreeViewのnodeの増やし方

この記事は7/31に大幅に加筆しました。

TreeViewのnodeを実行時に増やす方法は二つあります。

■ 5/22モノvclから使用可能なaddNodeToItemsを使う方法。

親nodeは以下のように増やせます。
$this->TreeView1->addNodeToItems("test1",0,0,-1);

これにsubをつける場合、ちょっとややこしい。
と言うのも、sub nodeを増やすためのaddChildファンクションは、Treeview classではなくTreeNode classの中にあるので。

流れとしては、
1. 親node作成。
2. TreeViewの各nodeのうち、親にするnode(sub nodeを作りたいnode)のItemIDを指定。ItemIDはTreeViewのItemsプロパティの中。
2. ItemIDからnodeを探して変数に格納。 ←これがTreeNode
3. 2のTreeNodeに対して、addChildする。

具体的なコードは以下の通り。
親nodeを二つ作り、その下にそれぞれsub nodeを作成してます。

$this->TreeView1->addNodeToItems("test1",0,0,-1);
$this->TreeView1->addNodeToItems("test2",0,0,-1);

//まず親nodeを二つ作る

$item = $this->TreeView1->Items;
//各nodeの中身を一旦変数に入れる

$item = $this->TreeView1->$oya = $this->TreeView1->findNodeWithItemID($item[0]->ItemID);
//ItemIDをもとに、findNodeWithItemIDで取得してきたnodeを$oyaに格納
$item = $this->TreeView1->$oya->addChild("sub1", 1, 0, 1);

$item = $this->TreeView1->$oya = $this->TreeView1->findNodeWithItemID($item[1]->ItemID);
$oya->addChild("sub2", 1, 0, 1);


ちなみに、addNodeToItemsの中でガチで書かれている

$tn->Level = 1;

を2にすればsub nodeが出来るようなんだけど・・・、これを変数にしてくれたらいいのにな。


■TreeViewのItemsに直接ぶち込むやり方
addNodeToItemsが使えないバージョンのvcl向き
※NewsGroupでサンプルを書いていた人がいたので、それを参照しました。

$tmp[] = array(
"Caption" => "hoge",
"ImageIndex" => 0,
"SelectedIndex" => 0,
"StateIndex" => -1,
"Tag" => 0,
"Items" => array(array("Caption" => "Sub1"), array("Caption" => "Sub2"))
);

$this->TreeView1->Items = array_merge($this->TreeView1->Items, $tmp);


■sub nodeをひとつ追加
$items = $this->TreeView1->Items;
$items[0]["Items"][] = array("Caption" => "Sub3");
$this->TreeView1->Items = $items;

上のコードはaddNodeToItemsと併用するとエラーになるので、注意して下さい。

|

« PEARマネージャおよびHTTP_RequestをD4PHPにインストール | トップページ | Queryの値をComboBoxへ »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/70189/15949912

この記事へのトラックバック一覧です: TreeViewのnodeの増やし方:

« PEARマネージャおよびHTTP_RequestをD4PHPにインストール | トップページ | Queryの値をComboBoxへ »