3

只需要通过以下方式访问我的自定义 TreeView:

MyTreeView1.Selected.MyOwnProperty := 'something';

所以,我想做的就是制作与 TreeView 相同的组件,但是 + 我需要将我自己的属性添加到 TreeView 的所有 TreeNode 中。

如果我可以再问一次,谁能解释我如何使用“TTreeNodes 的数据属性指向一个对象”?任何人都可以解释如何保存一些信息(例如姓名和年龄)以及如何从选定的 TTreeNode 获取这些信息?

4

3 回答 3

10

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

例如:

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 以返回您的树节点类。

于 2011-05-09T20:33:46.207 回答
1

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

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

于 2011-05-10T00:59:35.267 回答
0

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

于 2011-05-09T21:51:54.000 回答