相关文章推荐
高大的凉茶
·
Hive Session ID ...
·
4 月前
·
无邪的猴子
·
张岳博士
·
1 年前
·
强悍的钥匙
·
electron如何嵌套并打开第三方exe? ...
·
1 年前
·
打酱油的椰子
·
敖丙工作以来总结的大厂SQL调优姿势-敖丙 ...
·
1 年前
·
Code
›
delphi控件-VirtualStringTreeView使用-转 - 蓝蓝的
编程语言
node
delphi
vst
https://www.cnblogs.com/rogge7/p/5685472.html
独立的红豆
1 年前
_pNodeData := VST.GetNodeData(PVN);
if Assigned(_pNodeData) then
ShowMessage(_pNodeData.Name);
PVN := VST.GetNextSibling(PVN);
*遍历所有节点:
Delphi代码
VST.IterateSubtree(nil,VSTIterateProc,nil,[]);
procedure TForm1.VSTIterateProc(Sender: TBaseVirtualTree;
Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
_pNodeData:PTagCustomListItem;
begin
_pNodeData := Sender.GetNodeData(Node);
if Assigned(_pNodeData) then
ShowMessage(_pNodeData.Name);
*增加根节点:
Delphi代码
_count := VST.RootNodeCount ;
VST.RootNodeCount := _count +
1;
*增加子节点:
Delphi代码
_count: Cardinal;
begin
// add as child
_count := VST.ChildCount[VST.FocusedNode];
VST.ChildCount[VST.FocusedNode] := _count +
1 ;
VST.Expanded[VST.FocusedNode] := True;
VST.InvalidateToBottom(VST.FocusedNode);
*另一种添加节点方法:
Delphi代码
procedure TForm1.FormCreate(Sender: TObject);
Data:PTagCustomListItem;
RootNode:PVirtualNode;
begin
//清除所有Node
VirtualStringTree1.Clear;
//指定VitrualStringTree有幾個Node
//VirtualStringTree1.RootNodeCount :=
2;
//將所定義的結構大小指定給VitualStringTree
VirtualStringTree1.NodeDataSize := SizeOf(TTagCustomListItem);
//添加节点
RootNode:= VirtualStringTree1.AddChild(nil);
Data:=VirtualStringTree1.GetNodeData(RootNode);
Data^.Name:=
'根结点';
RootNode:= VirtualStringTree1.AddChild(nil);
Data:=VirtualStringTree1.GetNodeData(RootNode);
Data^.Name:=
'根结点aaa';
*必须的回调函数:
Delphi代码
procedure TForm1.VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
_pNodeData:PTagCustomListItem;
begin
_pNodeData := Sender.GetNodeData(Node);
if Assigned(_pNodeData) then
CellText := _pNodeData.Name;
procedure TForm1.VSTInitNode(Sender: TBaseVirtualTree; ParentNode,
Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
_pNodeData:PTagCustomListItem;
begin
_pNodeData := Sender.GetNodeData(Node);
if Assigned(_pNodeData) then
_pNodeData.Name := Format(
'Node Level:%d, Index:%d ',[Sender.GetNodeLevel(Node),Node.Index]);
推荐文章
高大的凉茶
·
Hive Session ID 在不停的生成 - CSDN文库
4 月前
无邪的猴子
·
张岳博士
1 年前
强悍的钥匙
·
electron如何嵌套并打开第三方exe? - 知乎
1 年前
打酱油的椰子
·
敖丙工作以来总结的大厂SQL调优姿势-敖丙 java
1 年前