ich möchte per Drag and Drop ganze Äste eines Treeviews verschieben. Dieses Beispiel verwende ich als Vorlage. Dabei wird nur ein einzelner Knoten kopiert.
Beim Verschieben ganzer Äste muss ich darauf achten, dass keine Zirkelbezüge entstehen. D.h. es darf kein Knoten auf einen seiner Nachkommen verschoben werden.
Code: Alles auswählen
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
vat
quellknoten, zielknoten: TTreeNode;
begin
quellknoten := TreeView1.Selected;
zielknoten := TreeView1.GetNodeAt(x,y);
while zielknoten <> nil do
If (zielknoten = quellknoten) then // <-- Kann ich die Gleichheit zweier Knoten, auf diese Weise ermitteln?
begin
showmessage("Achtung Zirkelbezug!");
exit;
end
else
zielknoten := zielknoten.GetParent; // <-- die Funktion gibt es nicht. Wie springe ich zum Vater?
end;
Gruß,
Peter