procedure TForm1.VirtualStringTree1LoadNode(Sender: TBaseVirtualTree; Node: PVirtualNode; Stream: TStream); var TreeData: PTreeData; BinaryReader: TBinaryReader; begin TreeData := Sender.GetNodeData(Node); BinaryReader := TBinaryReader.Create(Stream); try TreeData.Column0 := BinaryReader.ReadString; TreeData.Column1 := BinaryReader.ReadString; TreeData.Column2 := BinaryReader.ReadString; finally BinaryReader.Free; end; end; procedure TForm1.VirtualStringTree1SaveNode(Sender: TBaseVirtualTree; Node: PVirtualNode; Stream: TStream); var TreeData: PTreeData; BinaryWriter: TBinaryWriter; begin TreeData := Sender.GetNodeData(Node); BinaryWriter := TBinaryWriter.Create(Stream); try BinaryWriter.Write(TreeData.Column0); BinaryWriter.Write(TreeData.Column1); BinaryWriter.Write(TreeData.Column2); finally BinaryWriter.Free; end; end;