2

X個のルートとX個の子ノードを持つVirtualStringTreeがあります。

すべてのルートには、特別なNodeDataが割り当てられています。すべての子ノードには、別のNodeDataが割り当てられています。OnFreeNodeがどれであるかをどうやって知ることができますか?原因どのレコードが割り当てられているかを知らずにデータを解放することはできません。何か案は?

4

1 に答える 1

3

ノードレベルを決定するには、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;
于 2012-08-03T21:37:00.410 に答える