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

发布于 2024-11-05 20:36:20 字数 290 浏览 2 评论 0原文

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

MyTreeView1.Selected.MyOwnProperty := 'something';

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

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

just need o access to my custom TreeView with this:

MyTreeView1.Selected.MyOwnProperty := 'something';

So, all i want to do is make same component as TreeView is but + i need to add my own property to all of the TreeNodes of TreeView.

If I may ask again, can anybody explain me how to use "data property of TTreeNodes to point to an object"? Could anybody explain how to save some information to it (for example name and age) and how to get this information from selected TTreeNode?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

北城挽邺 2024-11-12 20:36:20

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

At least with XE, you can override the creation of tree nodes with a TTreeView using the OnCreateNodeClass property to create custom TTreeNodes.

For example:

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;

You can then subclass TTreeView to change Selected to return your tree node class.

撩起发的微风 2024-11-12 20:36:20

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

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

I usually use the data property of TTreeNodes to point to an object that contains the actual data that I'm working with.

That approach encourages separating your model from the GUI, which is a Good Thing.

高跟鞋的旋律 2024-11-12 20:36:20

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

Manny, if you want to access your custom property at design time you also need to program designtime support for this - custom property editor for Items property.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文