基于TreeView创建自己的组件(TTreeNode问题)

时间:2011-05-09 20:13:09

标签: delphi treeview lazarus

只需要访问我的自定义TreeView:

MyTreeView1.Selected.MyOwnProperty := 'something';

所以,我想做的就是和TreeView一样创建相同的组件但是+我需要将自己的属性添加到TreeView的所有TreeNodes中。

如果我再问一遍,有人可以解释一下如何使用“TTreeNodes的数据属性指向一个对象”吗?有人可以解释如何保存一些信息(例如名称和年龄)以及如何从选定的TTreeNode获取此信息吗?

3 个答案:

答案 0 :(得分:10)

至少在XE中,您可以使用OnCreateNodeClass属性覆盖使用TTreeView创建树节点以创建自定义TTreeNodes。

例如:

type
  TMyTreeNode = class (TTreeNode)
  //
  end;

procedure TMyForm.OnCreate(Sender: TObject);
begin
  MyTreeView.OnCreateNodeClass := OnCreateNodeClass;
end;

procedure TMyForm.OnCreateNodeClass(Sender: TCustomTreeView; 
  var NodeClass: TTreeNodeClass);
begin
  NodeClass := TMyTreeNode;
end;

然后,您可以继承TTreeView以更改Selected以返回树节点类。

答案 1 :(得分:1)

我通常使用TTreeNodes的data属性指向包含我正在使用的实际数据的对象。

这种方法鼓励将模型与GUI分离,这是一件好事。

答案 2 :(得分:0)

Manny,如果你想在设计时访问自定义属性,你还需要为此设计时间程序支持 - Items属性的自定义属性编辑器。