您现在的位置:首页 >> VCL >> VCL >> 内容

Delphi之Virtual Treeview使用心得

时间:2011/9/3 16:27:13 点击:

  核心提示:1.定义节点的数据结构2.GetNodeDataSize事件 FreeNode事件3.GetText事件 根据Column来写多列4.GetImageIndex事件 同上5.PaintText事件 自...
1.定义节点的数据结构
2.GetNodeDataSize事件 FreeNode事件
3.GetText事件 根据Column来写多列
4.GetImageIndex事件 同上
5.PaintText事件 自定义TargetCanvas
6.GetPopupMenu事件 设定PopupMenu
7.OnSaveNode和Onloadnode 保存为文件,需要自己实现这二个事件


显示Header
1.双击VST
2.添加Column
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掉

作者:外出就餐 来源:原创
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
本类推荐
  • 没有
本类固顶
  • 没有
  • 盒子文章(www.2ccc.com) © 2017 版权所有 All Rights Reserved.
  • 沪ICP备05001939号