我想在每次填充树视图时向节点添加信息。我的意思是,例如,当我创建一个 ChildNode 时,我想将它与其 kinhsip 程度链接起来。也许属性数据是为此而制作的,但我不知道如何处理它。
假设您使用的是 VCL 的TTreeView组件,而不是 FireMonkey 的TTreeView组件或其他第三方树视图,那么处理这种情况的最佳方法是从 VCL 的TTreeNode类派生一个新类,并向其中添加一个自定义字段以保存您想要的内容值,然后您可以使用该TTreeView.OnCreateNodeClass事件来TTreeView创建类的实例:
type
TMyTreeNode = class(TTreeNode)
public
Toto: Real;
end;
procedure TMyForm.TreeView1CreateNodeClass(Sender: TCustomTreeView; var NodeClass: TTreeNodeClass);
begin
NodeClass := TMyTreeNode;
end;
Run Code Online (Sandbox Code Playgroud)
然后,每当您添加新节点或需要检索现有节点的自定义值时,您只需将指针类型转换TTreeNode为TMyTreeNode即可访问您的自定义字段:
Node := TreeView1.Items.Add(nil, '...');
TMyTreeNode(Node).Toto := ...;
Node := TreeView1.Items.AddChild(Node, '...');
TMyTreeNode(Node).Toto := ...;
...
Value := TMyTreeNode(TreeView1.Items.Item[index]).Toto;
Run Code Online (Sandbox Code Playgroud)