Delphi之Virtual Treeview使用心得
1.定义节点的数据结构
2.GetNodeDataSize事件 FreeNode事件
3.GetText事件 根据Column来写多列
4.GetImageIndex事件 同上
5.PaintText事件 自定义TargetCanvas
6.GetPopupMenu事件 设定PopupMenu
7.OnSaveNode和Onloadnode 保存为文件,需要自己实现这二个事件
显示Header
1.双击VST
2.添加Column -> Text属性
3.Include( VST.Header.Option, hoVisible);
显示单选、复选框
Include(VST.TreeOptions.MiscOptions,toCheckSupport);
VST.CheckImageKind :=ckXP;
Node.CheckType :=ctCheckBox;//新加节点如果要显示复选框,一定要指定,默认值ctNone
Node.CheckState=csCheckedNormal;//是否选中状态
不显示TreeLine
TreeOption->PaintOptions->toShowTreeLines
添加节点
var
Node: PVirtualNode;
Data: PVSTNode;
Node := VST.AddChild(nil);
Data := VST.GetNodeData(Node);
更新显示
VST.InvalidateNode(Node);
当前选中的节点
VST.FocusedNode
遍历
var
Node:PVirtualNode;
Data:PNodeData;
begin
Node:= VST.GetFirst;
while Assigned(Node) do
begin
Data := VST.GetNodeData(Node);
...
Node := VST.GetNext(Node);
end;
节点没有子节点,但想显示节点前的展开+符号
Include(Node.States,vsHasChildren);
三态复选框选中级连选择, Node.CheckType := ctTriStateCheckBox;
选中的三态:未选中csUncheckedNormal,选中csCheckedNormal,子节点选中父节点状态csMixedNormal
假如以对象而不是记录的方式来存放数据结构
1.初使化时 VST.NodeDataSize:=4;
2.添加节点 NewNode:= VST.AddChild(ParentNode,Data);
3.获取节点数据vst.GetNodeData(Node)^ //注意GetNodeData函数获取的其实是一个指针
4.释放数据 在OnFreeNode事件中把对象Free掉