Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TreeView - Node rauf / runter schieben ? (https://www.delphipraxis.net/125999-treeview-node-rauf-runter-schieben.html)

moelski 16. Dez 2008 10:18


TreeView - Node rauf / runter schieben ?
 
Moin !

Hat jemand ein Quellcode Schnipsel, um in einem normalen TreeView einen Node nach oben / unten zu verschieben und zwar nur auf einer Ebende.

Bsp:
Test 1
--- Node 1
--- Node 2
--- Node 3

Dann also z.B. Node 3 selektieren, Button "UP" drücken und man hat eben die Reihenfolge 1 / 3 / 2. Das eben für rauf und runter.

taaktaak 16. Dez 2008 11:00

Re: TreeView - Node rauf / runter schieben ?
 
Moin, Moin.
Soll es unbedingt mit 'nem Button funktionieren? Bei den Schweizern gibt es hier ein Beispiel die Aufgabe mit DragAndDrop zu lösen.

moelski 16. Dez 2008 11:03

Re: TreeView - Node rauf / runter schieben ?
 
Moin !

Drag & Drop geht schon. Aber da kann man eben noch nicht die Position mit festlegen. Es wird immer hinten angehängt.

Drum würde ich gerne über einen Button die Reihenfolge anpassen können.

Hawkeye219 16. Dez 2008 11:48

Re: TreeView - Node rauf / runter schieben ?
 
Moin Dominik,

hier ist der gewünschte Schnipsel:

Delphi-Quellcode:
procedure MoveTreeNode (const aTreeView : TTreeView;
                        const aNode     : TTreeNode;
                        const aDirection : Integer);
var
  Sibling : TTreeNode;
begin
  if (aNode = nil) then
    Exit;

  if (aDirection < 0)
    then Sibling := aNode.getPrevSibling
    else Sibling := aNode.getNextSibling;

  if (Sibling = nil) then
    Exit;

  aTreeView.Items.BeginUpdate;
  try
    if (aDirection < 0) then
      aNode.MoveTo (Sibling, naInsert)
    else
      Sibling.MoveTo (aNode, naInsert);
  finally
    aTreeView.Items.EndUpdate;
  end;
end;

// Anwendung

MoveTreeNode (TreeView1, TreeView1.Selected, -1); // Knoten nach oben schieben
MoveTreeNode (TreeView1, TreeView1.Selected, +1); // Knoten nach unten schieben
Gruß Hawkeye

moelski 16. Dez 2008 11:57

Re: TreeView - Node rauf / runter schieben ?
 
Ich kann nur eins sagen :

DANKE ! :thumb: :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz