求VirtualStringTree使用实例

keeley20 2010-10-12 03:28:17
求VirtualStringTree使用实例一个,各位大牛帮帮忙
我看到国外一个软件,效果如下图:

这个“default”分组是我想实现的功能,delphi功力还不够,
官方的demo写的好复杂
希望大牛们能帮忙实现 添加删除根节点 添加删除子节点
我自己只能仿照网上的代码 把他当成listview使用

本人等级比较低 分数上限只有100分,希望各位能帮帮忙
...全文
370 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
keeley20 2010-10-13
  • 打赏
  • 举报
回复
谢谢ZyxIp,kye_jufei大牛热心帮助,也谢谢ecjtu5208,sz_haitao
问题基本上解决了,

这控件感觉非常强大,决定再深入的学习下
haitao 2010-10-13
  • 打赏
  • 举报
回复
它为了实现高速的加载,机制是有点特别
好像是通过getdata事件来实现取节点信息来显示的
ZyxIp 2010-10-13
  • 打赏
  • 举报
回复
这个控件完全可以替换系统的LISTVIEW,TREEVIEW 。速度很好,可控性也非常好。图标,排序,编辑功能的支持
也非常好。
ZyxIp 2010-10-12
  • 打赏
  • 举报
回复
你在 OnGetText 中 处理就可以了。遇到根节点时CellText='';

不知道你明白了没。不明白的话将你QQ号给我发个消息。我来加你。

kye_jufei 2010-10-12
  • 打赏
  • 举报
回复
kye_jufei 2010-10-12
  • 打赏
  • 举报
回复
參考一下。。。
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, VirtualTrees;

type
TForm1 = class(TForm)
VirtualStringTree1: TVirtualStringTree;
procedure VirtualStringTree1GetText(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
var CellText: WideString);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

//定义VirtualStringTree结构
type
PVSTNodeData = ^TVSTNode;
TVSTNode = record
Name: string;
//可以继续扩展
end;


implementation

{$R *.dfm}


procedure TForm1.VirtualStringTree1GetText(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
var CellText: WideString);
var
VSTNode: PVSTNodeData;
begin
//將Node资料读出
VSTNode := Sender.GetNodeData(Node);
//设定Cell的值
CellText := VSTNode.Name;
end;


procedure TForm1.FormCreate(Sender: TObject);
var
Data:PVSTNodeData;
RootNode:PVirtualNode;
begin
//清除所有Node
VirtualStringTree1.Clear;
//指定VitrualStringTree有幾個Node
//VirtualStringTree1.RootNodeCount := 2;
//將所定義的結構大小指定給VitualStringTree
VirtualStringTree1.NodeDataSize := SizeOf(TVSTNode);

//添加节点
RootNode:= VirtualStringTree1.AddChild(nil);
Data:=VirtualStringTree1.GetNodeData(RootNode);
Data^.Name:='根结点';

RootNode:= VirtualStringTree1.AddChild(nil);
Data:=VirtualStringTree1.GetNodeData(RootNode);
Data^.Name:='根结点aaa';

end;


end.
keeley20 2010-10-12
  • 打赏
  • 举报
回复
谢谢楼上回复,请看两张图的根节点的区别,
第一张图片的根节点只有“default”一条数据 下面的子节点才有后面那些数据
而我自己写的根节点和子节点的数据是一样多的,我希望做成第一张图的样子。
不知这样是否清楚。
ZyxIp 2010-10-12
  • 打赏
  • 举报
回复
写个DEMO太麻烦了,你有啥问题直接问吧。
keeley20 2010-10-12
  • 打赏
  • 举报
回复
贴别沉了,分数虽少,还是希望大牛们能帮帮忙。
keeley20 2010-10-12
  • 打赏
  • 举报
回复
VirtualStringTree比较复杂,但十分强大,网上例子和用的人好像不多,谢谢帮顶
ecjtu5208 2010-10-12
  • 打赏
  • 举报
回复
画画+代码。
感觉没什么。
帮你顶一下

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧