只需要通过以下方式访问我的自定义 TreeView:
MyTreeView1.Selected.MyOwnProperty := 'something';
所以,我想做的就是制作与 TreeView 相同的组件,但是 + 我需要将我自己的属性添加到 TreeView 的所有 TreeNode 中。
如果我可以再问一次,谁能解释我如何使用“TTreeNodes 的数据属性指向一个对象”?任何人都可以解释如何保存一些信息(例如姓名和年龄)以及如何从选定的 TTreeNode 获取这些信息?
至少在 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 以返回您的树节点类。
我通常使用 TTreeNodes 的 data 属性来指向一个包含我正在使用的实际数据的对象。
这种方法鼓励将您的模型与 GUI 分离,这是一件好事。
Manny,如果您想在设计时访问您的自定义属性,您还需要为此编程设计时支持 - Items 属性的自定义属性编辑器。