在C ++ Builder中向TTreeView添加节点

时间:2015-02-23 12:44:54

标签: c++ treeview c++builder

这是一个非常简单的问题,我不得不问,但我无法在任何地方找到答案。

我使用的是C ++ Builder XE6,我想使用TTreeView。我找到了几个关于它的教程,说添加节点的方法是这样做:

TreeView->Items->Add(NULL, "name");

但它不起作用,我得到的错误是Add()不是Items的成员。经过快速研究后,我发现Add()是TTreeNodes的一种方法,但TreeView-> Items是一个TTreeViewItem。也许我读过的所有教程都已经过时了。无论如何,我无法找到任何办法。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您需要调用TreeView->Items->AddChild(NULL, "name"); - 这将添加root的子节点(NULL)。如果需要添加特定节点的子节点,则需要将该节点作为参数传递。

根据docs,并快速检查hpp文件,ItemsTTreeNodes,因此AddAddChild应该有效。您确定自己没有访问Items[0]吗?

答案 1 :(得分:0)

TTreeViewItem是FireMonkey类,而不是VCL类。您阅读的所有教程都可能基于VCL。

在VCL中,TTreeView::Items作为TTreeNodes对象:

__property TTreeNodes* Items = {read=FTreeNodes, write=SetTreeNodes};

TTreeNodes确实有Add()方法:

TTreeNode* __fastcall Add(TTreeNode* Sibling, const System::String S);

您展示的代码在VCL中运行良好。

在FireMonkey中,TTreeView::ItemsTTreeViewItem个对象的索引数组:

__property TTreeViewItem* Items[int Index] = {read=GetTreeItem};

TTreeViewItem没有Add()方法。将新节点添加到FireMonkey TTreeView的正确方法是创建TTreeViewItem对象并设置其Parent属性,例如:

TTreeViewItem *node = new TTreeViewItem(TreeView);
node->Text = "name";
node->Parent = TreeView;