このノード データ レコードがあるとします。
Type
PPerson = ^TPerson;
TPerson = record
Name: String;
Age: Integer;
SomeBool: Boolean;
end;
VirtualStringTree を設定するには、次のようにします。
Procedure AddToTree(Person: TPerson);
Var
Node: PVirtualNode;
Data: PPerson;
Begin
Node := VT.AddChild(nil);
Data := VT.GetNodeData(Node);
Data.Name := Person.Name;
Data.Age := Person.Age;
Data.SomeBool := Person.SomeBool;
End;
Procedure TMyForm.MyButtonClick(Sender: TObject);
Var
Person: TPerson;
Begin
Person.Name := 'Jeff';
Person.Age := 16;
Person.SomeBool := False;
AddToTree(Person);
End:
これで問題なく動作しますが、簡単にしたいので、レコードに新しいフィールドを追加するたびに AddToTree メソッドを変更する必要はありません。
だから私はこれを試しました:
Procedure AddToTree(Person: TPerson);
Begin
VT.AddChild(nil,@Person);
End;
これはコンパイルされますが、VTが何も表示してPVirtualNode
いないため、データを取得していないように見えます。また、OnGetText イベントを中断すると、変数が空であることがわかります。
私は何を間違っていますか?:)