X個のルートとX個の子ノードを持つVirtualStringTreeがあります。
すべてのルートには、特別なNodeDataが割り当てられています。すべての子ノードには、別のNodeDataが割り当てられています。OnFreeNodeがどれであるかをどうやって知ることができますか?原因どのレコードが割り当てられているかを知らずにデータを解放することはできません。何か案は?
X個のルートとX個の子ノードを持つVirtualStringTreeがあります。
すべてのルートには、特別なNodeDataが割り当てられています。すべての子ノードには、別のNodeDataが割り当てられています。OnFreeNodeがどれであるかをどうやって知ることができますか?原因どのレコードが割り当てられているかを知らずにデータを解放することはできません。何か案は?
ノードレベルを決定するには、GetNodeLevel
関数を使用します。これは、0ベースのレベルインデックスを返します。ここで、0はルートノード、1はルートの子、2はルートの孫などを意味します。
したがって、OnFreeNode
イベントでは次のようなものを使用できます。
procedure TForm1.VirtualTreeFreeNode(Sender: TBaseVirtualTree;
Node: PVirtualNode);
begin
case VirtualTree.GetNodeLevel(Node) of
0: // free your root node data
1: // free your root's child node data
end;
end;