私はちょうどこのコンポーネントを発見し、それを使い始めました。
全体の概念は、必要に応じて外出先でノードを初期化することだと理解していますが、すべてを即座に初期化する必要があります。
それを行う賢い方法は何ですか?
私が思いついた唯一のことは、ノードを追加した後にGetLast()を使用することです。
もっと良い方法があると思いますか?
私はちょうどこのコンポーネントを発見し、それを使い始めました。
全体の概念は、必要に応じて外出先でノードを初期化することだと理解していますが、すべてを即座に初期化する必要があります。
それを行う賢い方法は何ですか?
私が思いついた唯一のことは、ノードを追加した後にGetLast()を使用することです。
もっと良い方法があると思いますか?
単一のノードを即座に初期化するより正しい方法は、既に提案されている FullExpand の代わりに、ValidateNode メソッドを使用することです。VTのドキュメントによると:
procedure ValidateNode(Node: PVirtualNode; Recursive: Boolean);
TBaseVirtualTree.ValidateNode メソッド
ValidateNode は、指定されたノード (および Recursive が true の場合はそのすべての子) が初期化されていることを確認します。Node が nil の場合、非表示のルート ノードが使用されます (これは、ツリー全体が検証される Recursive が true の場合にのみ意味があります)。
treeview.FullExpand;
ツリービューを手動で構築する独自の手順を作成できます。
例:
procedure TForm1.BuildTree;
var
i: integer;
Data: ^TYourRecord;
pNode, cNode: PVirtualNode;
begin
for i:=0 to 1000 - 1 do
begin
//build parent node
pNode := VT.AddChild(nil);
Data := VT.GetNodeData(pNode);
//fill record values
Data.SomeVar := 'Parent Node';
//build child node
cNode := VT.AddChild(pNode);
Data := VT.GetNodeData(cNode);
Data.SomeVar := 'Child Node';
end;
end;