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と併用するとエラーになるので、注意して下さい。
| 固定リンク

コメント