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掉