2024年5月30日发(作者:)
Virtual Treeview是一个可以完全代替Delphi自带的Treeview和Listview的
免费完全源码控件,但使用复杂。在看完几个自带DEMO后的一点心得。
自定义结点结构
PTagCustomListItem = ^TTagCustomListItem ;
TTagCustomListItem = record
Name:string;
Id:Integer;
end;
初始化
taSize := SizeOf(TTagCustomListItem);
deCount := 2;
遍历根节点
var
PVN:PVirtualNode;
_pNodeData:PTagCustomListItem;
begin
PVN := stChild(nil);
while Assigned(PVN) do
begin
_pNodeData := eData(PVN);
if Assigned(_pNodeData) then
ShowMessage(_);
PVN := tSibling(PVN);
end;
end;
遍历所有节点:
eSubtree(nil,VSTIterateProc,nil,[]);
procedure rateProc(Sender: TBaseVirtualTree;
Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
var
_pNodeData:PTagCustomListItem;
begin
_pNodeData := eData(Node);
if Assigned(_pNodeData) then
ShowMessage(_);
end;
增加根节点
_count := deCount ;
deCount := _count + 1;
增加子节点
var
_count: Cardinal;
begin
// add as child
_count := ount[dNode];
ount[dNode] := _count + 1 ;
ed[dNode] := True;
dateToBottom(dNode);
end;
另一种添加节点方法
procedure eate(Sender: TObject);
var
Data:PTagCustomListItem;
RootNode:PVirtualNode;
begin
//清除所有Node
;
//指定VitrualStringTree有幾個Node
//deCount := 2;
//將所定義的結構大小指定給VitualStringTree
taSize := SizeOf(TTagCustomListItem);
添加节点
RootNode:= ld(nil);
Data:=eData(RootNode);
Data^.Name:='根结点';
RootNode:= ld(nil);
Data:=eData(RootNode);
Data^.Name:='根结点aaa';
end;
*必须的回调函数:
procedure Text(Sender: TBaseVirtualTree; Node:
PVirtualNode;


发布评论