Was mir auffällt, ist, dass du Data^.Cover zwar erzeugst, aber danach nichts mehr damit machst. Stattdessen lädst du die Bilddaten in Data^.Image. Ich weiß aber im Moment weder, was TTreeData.Cover ist, noch was TTreeData.Image ist, weil du leider die Definition nicht verraten hast. Es wäre hilfreich, wenn du die noch nachliefern würdest. Mir scheint aber, als würdest du die beiden Felder an einigen Stellen vermischen, was vermutlich zu dem Fehler führt.
Erwarten würde ich sowas:
Delphi-Quellcode:
procedure TForm1.VSTSaveNode(Sender: TBaseVirtualTree;
Node: PVirtualNode; Stream: TStream);
var
Data: PTreeData;
begin
Data := VST.GetNodeData(Node);
Data^.Cover.SaveToStream(Stream);
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;
Data^.Cover.LoadFromStream(Stream);
end;
[edit]
Da kam kein roter Kasten
[/edit]
[edit2]
Wieso nutzt du eigentlich nicht die objektorientierte Variante? Mach es dir doch leichter und kapsel solche Angelegenheiten wie Erzeugen, Speichern und Laden.
[/edit2]