Hi
Ich hab ein VirtualTreeView in dem ich über Objekte Daten speichere.
Die Daten können ziemlich groß werden darum wäre es praktisch wenn sie erst geladen werden wenn sie gebraucht werden.
Das ist meine aktuelle ungünstige Laden procedure
Delphi-Quellcode:
procedure TMainForm1.VSTLoadNode(Sender: TBaseVirtualTree;
Node: PVirtualNode; Stream: TStream);
var
Len: Integer;
begin
TreeData := VST.GetNodeData(Node);
TreeData.FObject := TNodeData.Create;
with TNodeData(TreeData.FObject) do
begin
...
Stream.Read(Len, SizeOf(Len));
SetLength(FText, Len);
Stream.Read(PChar(FText)^, Len);
...
end;
end;
In FText müssen viele Daten geladen werden.
Das soll erst geschehen wenn man auf einen Node klickt.
Man müsste also in VSTLoadNode die Position (der Daten im Stream) speichern um sie später laden zu können.
Ich glaube der Stream wird nach VSTLoadNode vom VST automatisch gefreet.
Man müsste ihn also auch vorher kopieren.
Ist sowas zu realisieren?
Ich dachte auch daran den ganzen Ladevorgang per
XML zu machen.
Kommt drauf an was komplizierter ist.
MfG Coder