Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: VirtualTreeview 6.2.5 - Node mit Daten von einer Treeview zur anderen kopieren -

  Alt 26. Mai 2016, 06:59
Du gehst in OnNodeCopying von einer falschen Bedeutung der Parameter aus.

Wenn man darauf einen Haltepunkt setzt oder im Quelltext den Aufruf manuell sucht, landet man in diesem Abschnitt:
Delphi-Quellcode:
            //...
            Result := TargetTree.MakeNewNode;
            InternalConnectNode(Result, Target, TargetTree, Mode);
            TargetTree.InternalAddFromStream(Stream, VTTreeStreamVersion, Result);
            if not DoNodeCopying(Result, Target) then
            //...
Wie man sieht bekommt man den neu erstellten Knoten im Zielbaum und dessen Elternknoten übergeben. Also nicht den ursprünglichen Knoten wie du vermutet hast.

Wie funktioniert das ganze eigentlich?
Die Knoten werden in einen Stream gespeichert und dann wieder daraus gelesen. Die Daten des Benutzers kann der Tree dabei aber nicht speichern, denn diese kennt er ja nicht direkt.
Deshalb gibt es zwei Events, OnSaveNode und OnLoadNode, die dafür aufgerufen werden. Dort kannst du die Daten speichern und laden, die zu dem Knoten gehören.

Der manuelle Weg ist allerdings deutlich schneller, da das ganze Speichern und Laden weg fällt.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat