求VirtualStringTree使用实例

时间:2022-03-24 17:28:30
求VirtualStringTree使用实例一个,各位大牛帮帮忙
我看到国外一个软件,效果如下图:
求VirtualStringTree使用实例
这个“default”分组是我想实现的功能,delphi功力还不够,
官方的demo写的好复杂
希望大牛们能帮忙实现 添加删除根节点 添加删除子节点 
我自己只能仿照网上的代码 把他当成listview使用
求VirtualStringTree使用实例
本人等级比较低 分数上限只有100分,希望各位能帮帮忙

11 个解决方案

#1


  画画+代码。
  感觉没什么。
  帮你顶一下

#2


VirtualStringTree比较复杂,但十分强大,网上例子和用的人好像不多,谢谢帮顶

#3


贴别沉了,分数虽少,还是希望大牛们能帮帮忙。

#4


写个DEMO太麻烦了,你有啥问题直接问吧。

#5


谢谢楼上回复,请看两张图的根节点的区别,
第一张图片的根节点只有“default”一条数据 下面的子节点才有后面那些数据
而我自己写的根节点和子节点的数据是一样多的,我希望做成第一张图的样子。
不知这样是否清楚。

#6


參考一下。。。
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.

#7


本站也有一個demo:   http://download.csdn.net/source/1547569

#8


你在 OnGetText 中 处理就可以了。遇到根节点时CellText='';

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

#9


它为了实现高速的加载,机制是有点特别
好像是通过getdata事件来实现取节点信息来显示的

#10


谢谢ZyxIp,kye_jufei大牛热心帮助,也谢谢ecjtu5208,sz_haitao
问题基本上解决了,
求VirtualStringTree使用实例
这控件感觉非常强大,决定再深入的学习下

#11


这个控件完全可以替换系统的LISTVIEW,TREEVIEW 。速度很好,可控性也非常好。图标,排序,编辑功能的支持
也非常好。

#1


  画画+代码。
  感觉没什么。
  帮你顶一下

#2


VirtualStringTree比较复杂,但十分强大,网上例子和用的人好像不多,谢谢帮顶

#3


贴别沉了,分数虽少,还是希望大牛们能帮帮忙。

#4


写个DEMO太麻烦了,你有啥问题直接问吧。

#5


谢谢楼上回复,请看两张图的根节点的区别,
第一张图片的根节点只有“default”一条数据 下面的子节点才有后面那些数据
而我自己写的根节点和子节点的数据是一样多的,我希望做成第一张图的样子。
不知这样是否清楚。

#6


參考一下。。。
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.

#7


本站也有一個demo:   http://download.csdn.net/source/1547569

#8


你在 OnGetText 中 处理就可以了。遇到根节点时CellText='';

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

#9


它为了实现高速的加载,机制是有点特别
好像是通过getdata事件来实现取节点信息来显示的

#10


谢谢ZyxIp,kye_jufei大牛热心帮助,也谢谢ecjtu5208,sz_haitao
问题基本上解决了,
求VirtualStringTree使用实例
这控件感觉非常强大,决定再深入的学习下

#11


这个控件完全可以替换系统的LISTVIEW,TREEVIEW 。速度很好,可控性也非常好。图标,排序,编辑功能的支持
也非常好。