Допустим, у меня есть запись данных этого узла:
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;
Это компилирует, , но кажется, что PVirtualNode
не получил данные, потому что мой VT ничего не отображает, и при разрыве в событии OnGetText я вижу, что переменные пусты.
Что я делаю не так? :)