Hallo,
bei der VST-Komponente (jetzt Version 4.8.5) ist es ja möglich über das Event OnSaveNode / OnLoadNode die einem Node mitgegebenen Daten mitzuspeichern wenn man den VST speichert.
für einen Integer in meinem Datenrecord schreibe ich dann so etwas:
Delphi-Quellcode:
procedure TForm1.VSTLoadNode(Sender: TBaseVirtualTree;
Node: PVirtualNode; Stream: TStream);
var
Data: PTreeData;
begin
Data := VST.GetNodeData(Node);
Stream.read(Data.Parts, SizeOf(Data.Parts));
end;
procedure TForm1.VSTSaveNode(Sender: TBaseVirtualTree;
Node: PVirtualNode; Stream: TStream);
var
Data: PTreeData;
begin
Data := VST.GetNodeData(Node);
Stream.write(Data.Parts, SizeOf(Data.Parts));
end;
Das funktioniert auch.
jetzt habe ich das Problem das in meinem Datenrecord sich auch ein TBitmap befindet, dieses speichere/lade ich jetzt so:
Delphi-Quellcode:
procedure TForm1.VSTSaveNode(Sender: TBaseVirtualTree;
Node: PVirtualNode; Stream: TStream);
var
Data: PTreeData;
Len: integer;
begin
Data := VST.GetNodeData(Node);
Len := SizeOf(Data.Image);
Stream.write(Len, Sizeof(Len));
Stream.write(Data.Cover, SizeOf(Data.Image));
end;
procedure TForm1.VSTLoadNode(Sender: TBaseVirtualTree;
Node: PVirtualNode; Stream: TStream);
var
Data: PTreeData;
Len: integer;
begin
Data := VST_Movies.GetNodeData(Node);
Data.Cover := TBitmap.Create;
Len := Stream.Read(Len, SizeOf(Len));
Stream.read(Data.Image, Len);
end;
Jedoch sobald ich dann auf das Bitmap zugreifen wie ( wie hier: ) gibt es eine
AV
Delphi-Quellcode:
procedure TForm1.VSTClick(Sender: TObject);
var
Node: PVirtualNode;
Data: PTreeData;
begin
Node:=VST.FocusedNode;
if not Assigned(Node) then
Exit;
Data := vst.GetNodeData(Node);
Image1.Picture.Bitmap := Data^.Image;
end;
Schonmnal im vorraus Danke für jede Hilfe
... Mike