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

Add a node to TTreeView in C++ Builder

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

我正在使用 C++ Builder XE6,我想使用 TTreeView。找了好几个教程,说添加节点的方法是这样的:

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

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

感谢您的帮助。

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

根据 docs,并快速检查 hpp 文件,Items 是一个 TTreeNodes,因此 AddAddChild 应该可以工作。例如,您确定没有访问 Items[0] ?

TTreeViewItem 是 FireMonkey class,不是 VCL class。您阅读的所有教程都可能基于 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;