只需要访问我的自定义TreeView:
MyTreeView1.Selected.MyOwnProperty := 'something';
所以,我想做的就是和TreeView一样创建相同的组件但是+我需要将自己的属性添加到TreeView的所有TreeNodes中。
如果我再问一遍,有人可以解释一下如何使用“TTreeNodes的数据属性指向一个对象”吗?有人可以解释如何保存一些信息(例如名称和年龄)以及如何从选定的TTreeNode获取此信息吗?
答案 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属性的自定义属性编辑器。