求VirtualStringTree使用实例一个,各位大牛帮帮忙
我看到国外一个软件,效果如下图:这个“default”分组是我想实现的功能,delphi功力还不够,
官方的demo写的好复杂
希望大牛们能帮忙实现 添加删除根节点 添加删除子节点
我自己只能仿照网上的代码 把他当成listview使用本人等级比较低 分数上限只有100分,希望各位能帮帮忙
我看到国外一个软件,效果如下图:这个“default”分组是我想实现的功能,delphi功力还不够,
官方的demo写的好复杂
希望大牛们能帮忙实现 添加删除根节点 添加删除子节点
我自己只能仿照网上的代码 把他当成listview使用本人等级比较低 分数上限只有100分,希望各位能帮帮忙
第一张图片的根节点只有“default”一条数据 下面的子节点才有后面那些数据
而我自己写的根节点和子节点的数据是一样多的,我希望做成第一张图的样子。
不知这样是否清楚。
unit Unit1;interfaceuses
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.
好像是通过getdata事件来实现取节点信息来显示的
问题基本上解决了,这控件感觉非常强大,决定再深入的学习下
也非常好。