Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Phoenix,
14. Jul 2008
Der Node ist immer assigned. Aber das NodeData Objekt nicht:
procedure TForm1.VST1FreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
var
Archiv: TArchiv;
begin
if assigned(node) then
begin
Archiv := TArchiv(Sender.getnodedata(node)^);
if Assigned(Archiv) then
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Phoenix,
14. Jul 2008
Eigentlich hat Zweiteres eher Vorteile. Wenn es dasselbe Objekt ist, und Du z.B. den Text veränderst, dann betrifft das sofort beide Bäume. Ansonsten müsstest Du die Änderung zwischen beiden Objekten synchronisieren.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Phoenix,
14. Jul 2008
Du kopierst den Eintrag - aber nicht die Daten.
Du hängst also den Pointer des exakt gleichen Objektes in beide Trees.
Wahrscheinlich rufen aber beide Trees in ihrem Event das die Knoten aufräumt Free auf dem Objekt auf. Das heisst Du rufst bei Kopierten Einträgen auf dem selben Objekt zweimal free auf - einmal via Tree1 und einmal über den zweiten. Beim zweiten Zugriff knallt es dann.
Du...