also ich habe es soweis mal zum laufen gebracht, ein kleines problem habe ich aber noch...
beim VST1 habe ich "DragOperations" auf [doLink] gestellt. Wenn ich also Nodes vom VST1 in den VST2 ziehe erstellt es mir im VST2 die Verknüpfungen der markierten Nodes vom VST1.
das funktioniert einwandfrai.
nun speichere ich aber beide VSTs beim beenden des Programms ab, und lade Sie beim nächsten Start wieder.
Dazu verwende ich folgende Prozeduren:
Delphi-Quellcode:
procedure TForm1.VST1SaveNode(Sender: TBaseVirtualTree; Node: PVirtualNode;
Stream: TStream);
var
Archiv: TArchiv;
begin
Archiv:=TArchiv(Sender.GetNodeData(node)^);
Stream.WriteComponent(Archiv);
end;
procedure TForm1.VST1LoadNode(Sender: TBaseVirtualTree; Node: PVirtualNode;
Stream: TStream);
var
Archiv: TArchiv;
p: pArchiv;
begin
Archiv:=Stream.ReadComponent(nil) as TArchiv;
p:=sender.GetNodeData(node);
p^:=Archiv;
end;
//zum Laden:
VST1.LoadFromFile('blabla1.bla');
VST2.LoadFromFile('blabla2.bla');
// und zum speichern:
VST1.SaveToFile('blabla1.bla');
VST2.SaveToFile('blabla2.bla');
Funktioniert auch - nur das Problem ist jetzt dass die Verknüpfungen vom VST2 zum VST1 nicht mehr vorhanden sind! Wenn ich also im VST1 ein Node verändere, dann wird es im VST2 nicht angepasst.
Und nochwas habe ich gemerkt: Wenn ich ein Node vom VST1 in den VST2 "kopiere" (doLink!) und danach diesen Node im VST1 lösche, gibts kurz darauf eine Acces violation weil ein Link dieses Nodes sich noch im VST2 befindet. Im VST2 soll dieser Node aber weiterhin bestehen bleiben!!
Also was meint Ihr, soll ich besser "DragOperations" auf [doCopy] stellen und dann "von Hand" anpassen wenn Änderungen gemacht wurden? oder gibts da eine Lösung für mein problem?
mfg
EDIT: und übrigens, es befinden sich NICHT AUSSCHLIESSLICH verknüpfungen vom VST1 im VST2! Es können sich auch "eigenständige" Nodes im VST2 befinden!