DelphiVirtual 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掉

posted on 2012-01-17 16:20  丰盛辉煌  阅读(4615)  评论(0编辑  收藏  举报