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

Man*_*nny 3 delphi treeview lazarus

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

MyTreeView1.Selected.MyOwnProperty := 'something';
Run Code Online (Sandbox Code Playgroud)

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

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

Too*_*the 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;
Run Code Online (Sandbox Code Playgroud)

然后,您可以将TTreeView子类化以更改Selected以返回树节点类.

  • @Manny在设计时填充树木肯定没有乐趣.借此机会摆脱那种特殊的痛苦. (2认同)
  • @Roddy它也在D6中.自从该课程的第一个版本以来,它可能就在那里.这是一个我经常使用的课程,并且认为我很清楚! (2认同)