![]() |
Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)
Hi Leute,
entweder es ist zu spät oder ich weis auch nicht. Ich möchte die Position eines Nodes im Zweig eines Baumes eine Position nach oben oder nach unten verschieben. Also ein klassisches MoveUp/MoveDown. Die Hilfe war fruchtlos, die Suche in der DP auch und in meinem Gehirn gleich ganz. Kann mir mal einer die Erleuchtung bringen? Dank und Gruß oki |
Re: Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)
Hallo
ungetestet: z.B den nächsten Node ermitteln mit VST.GetNext(..) Dann VST.MoveTo(...) anwenden. |
Re: Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)
Hi Toms,
nach MoveTo hatte ich gesucht, leider nur im pdf zum VTree. Ich schau noch mal nach. Da muss mir dann was entgangen sein. Naja, war gestern auch nicht mehr sehr früh am Tag. Kann das leider erst heute abend machen. Melde mich dann noch mal mit den Ergebnissen. Dank für die Antwort und Gruß oki |
Re: Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)
Hi,
ich habs mal so versucht, aber in dem Fall wird mir die erste Node immer an die letzte Stelle verschoben. Warum nur?
Delphi-Quellcode:
procedure TForm1.btn_down_itemClick(Sender: TObject);
var Node: PVirtualNode; begin Node:=VST.FocusedNode; if Node <> nil then begin vst.MoveTo(Node,vst,amInsertAfter,false); end; vst.Selected[vst.GetFirst] := true; //selektiere die erste node list_menu_itemsClick(self); //führe code beim selektieren aus end; |
Re: Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)
Also ich habe den Code nochmal geändert.
Mit dem Update der Komponente (von März 2009) und dem geänderten Code, gehts nun. Wenn´s jemandem helfen sollte, freuts mich!
Delphi-Quellcode:
//bewege node 1 nach unten
procedure TForm1.btn_down_itemClick(Sender: TObject); var Node: PVirtualNode; begin Node:=VST.FocusedNode; if Node <> nil then begin vst.MoveTo(Node,vst.GetNext(Node),amInsertAfter,false); end; vst.Selected[Node] := true; //selektiere das node gleich noch list_menu_itemsClick(SELF); //führe update für selektion aus, falls nötig end; //bewege node 1 nach oben procedure TForm1.btn_up_itemClick(Sender: TObject); var Node: PVirtualNode; begin Node:=VST.FocusedNode; if Node <> nil then begin vst.MoveTo(Node,vst.GetPrevious(Node),amInsertBefore,false); end; vst.Selected[node] := true; //selektiere das node gleich noch list_menu_itemsClick(SELF); //führe update für selektion aus, falls nötig end; |
Re: Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)
Hi torud,
auch dir Dank für die Hilfe. Ich hab das pdf noch mal durchstöbert. Dabei ist mir aufgefallen, dass ich MoveTo wirklich übersehen hatte. Keine Ahnung warum. Dein erster Code ist schon korrekt. MoveTo gibt es in überladener Version mit dem Aufruf für die Angabe eines Knotens sowie eines VTree als Ziel. Dieser Code:
Delphi-Quellcode:
verschiebt den Node in das VTree vst an die letzte (amInsertAfter) Stelle (wobei vst der eigene Tree ist). Es wird also die Methode:
vst.MoveTo(Node,vst,amInsertAfter,false);
Delphi-Quellcode:
verwendet.
procedure MoveTo(Node: PVirtualNode; Tree: TBaseVirtualTree; Mode: TVTNodeAttachMode; ChildrenOnly: Boolean); overload;
In deinem zweiten Beispiel rufst du wie folgt auf:
Delphi-Quellcode:
Da wird dann diese Methode verwendet:
vst.MoveTo(Node,vst.GetPrevious(Node),amInsertBefore,false);
Delphi-Quellcode:
Ich denke mal, da steckt das ganze Geheimnis. Ob vor dem Update die Methode überladen war kann ich aber auch nicht sagen. Ich denke mal eher ja.
procedure MoveTo(Source: PVirtualNode; Target: PVirtualNode; Mode: TVTNodeAttachMode; ChildrenOnly: Boolean); overload;
Ich hatte ganz vergessen meine Frage als beantwortet zu kennzeichen. Das werd ich jetzt nachholen. Besten Dank an euch beide, bis die Tage oki |
Re: Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)
Servus Oki,
danke für Dein Feedback. Auch vor dem Update war die Methode überladen, aber die von mir gelisteten Codes verschoben die Node IMMER an letzte respektive letzte Stelle. Naja und das wollte ich nicht. Seit dem Update gehts aber einwandfrei. |
Re: Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)
Ah, gut zu wissen. Welche Version war denn bei dir die alte und welche ist die neue? Nicht, dass ich in die selbe Falle tappe.
Gruß oki |
Re: Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)
Servus,
also die aktuelle Version ist die 4.8.5. Kann sein, dass ich vorher die 4.7.0 installiert hatte. Hier noch schnell der Link ![]() |
Re: Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)
Hi torud,
habs bei mir getestet und läuft anstandslos. Dank für die Hilfe und Gruß oki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz