![]() |
TreeView - Node verschieben DragDrop - aktuelle Ebene
Hallo @all !
Code von: ![]() Problem = erledigt ! Ich habe vor einen Knoten von 5->3 auf 4->3 zu verschieben - klappt ! Ich will nicht das es möglich ist z.B. 1->1 auf 1 zu verschieben, denke hierzu müsste ich die Ebene abfragen, komme hier aber nicht weiter ? Mit dem Code ist es zudem auch nicht möglich ein Item an den Knoten 0 anzuhängen. Danke für Eure Hilfe ! user0815
Delphi-Quellcode:
//------------------------------------------------------------------------------
procedure TForm1.FormCreate(Sender: TObject); var Node : TTreeNode; i,j : Integer; begin TreeView1.DragMode := dmAutomatic; Node := TreeView1.Items.Add(nil, IntToStr(0)); for i := 1 to 5 do begin Node := TreeView1.Items.Add(nil, IntToStr(i)); for j := 1 to i do begin TreeView1.Items.AddChild(Node, IntToStr(i) + ' -> ' + IntToStr(j)); end; end; end; //------------------------------------------------------------------------------ procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer); var ToDeleteItem, DropItem, CurrentItem, NextItem : TTreeNode; ChildCount, Childrun : Integer; begin { if Sender = Source then begin DropItem := TreeView1.GetNodeAt(X, Y); CurrentItem := TreeView1.Selected; ToDeleteItem := CurrentItem; NextItem := TreeView1.Items.Insert(DropItem, CurrentItem.Text); DropItem := NextItem; ChildCount := TreeView1.Selected.Count; for Childrun := 1 to ChildCount do begin CurrentItem := TreeView1.Selected.GetFirstChild; NextItem := TreeView1.Items.AddChild(DropItem, CurrentItem.Text); TreeView1.Items.Delete(CurrentItem); end; ToDeleteItem.Delete; end; } // Änderung - so funktioniert es wie ich will if Sender = Source then begin DropItem := TreeView1.GetNodeAt(X, Y); CurrentItem := TreeView1.Selected; if CurrentItem.Level > 0 then begin ToDeleteItem := CurrentItem; if DropItem.Level > 0 then TreeView1.Items.Insert(DropItem, CurrentItem.Text) else if DropItem.Level = 0 then TreeView1.Items.AddChild(DropItem, CurrentItem.Text); ToDeleteItem.Delete; end; end; end; //------------------------------------------------------------------------------ procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := Sender = TreeView1; end; //------------------------------------------------------------------------------ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:35 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