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 VCL: Drag&Drop auf TreeView - nicht auf TreeNode! (https://www.delphipraxis.net/200275-vcl-drag-drop-auf-treeview-nicht-auf-treenode.html)

FaTaLGuiLLoTiNe 5. Apr 2019 16:01

VCL: Drag&Drop auf TreeView - nicht auf TreeNode!
 
Hallo liebe Forengemeinde,

ich möchte gerne ein Drag&Drop auf einen TreeView realisieren, dabei soll aber kein spezifischer Knoten des TreeViews als Ziel angezeigt werden, sondern nur der TreeView selbst.

Leider wird während des Draggens beim Fahren mit der Maus über das TreeView immer der TreeNode in der aktuellen Zeile selektiert. Kann man das irgendwie beeinflussen?

DieDolly 5. Apr 2019 17:19

AW: VCL: Drag&Drop auf TreeView - nicht auf TreeNode!
 
Du könntest eventuell auslesen, welcher Node sich unter X und Y befindet und dann reagieren, wenn sich keiner dort befindet.
Delphi-Quellcode:
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
 Node: TTreeNode;
begin
 Node := TTreeView(Sender).GetNodeAt(X, Y);

 if Node = nil then
  begin
 
  end;
end;
Das Selektierungsproblem kann man vielleicht so lösen. Getestet habe ich es nicht
Delphi-Quellcode:
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer);
var
 Node: TTreeNode;
begin
 Node := TTreeView(Sender).GetNodeAt(X, Y);

 if Node = nil then
  Node.Selected := False;
end;
Oder vielleicht im TreeView1 MouseMove abfragen, ob TreeView1.Dragging True ist und wenn ja, dann das Selektieren von Nodes nicht zulassen.

Redeemer 5. Apr 2019 18:38

AW: VCL: Drag&Drop auf TreeView - nicht auf TreeNode!
 
Wirklich selektiert wird es nicht, es ist mehr so eine grafische Spielerei.

Das einfachste wäre, das TreeView auf ein Panel2 auf ein Panel1 zu packen. Bei Start des DnD wird Panel2 deaktiviert und am Ende wieder aktiviert. Panel1 nimmt die DnD-Operation an.

FaTaLGuiLLoTiNe 7. Apr 2019 11:44

AW: VCL: Drag&Drop auf TreeView - nicht auf TreeNode!
 
Zitat:

Zitat von Redeemer (Beitrag 1429590)
Wirklich selektiert wird es nicht, es ist mehr so eine grafische Spielerei.

Das einfachste wäre, das TreeView auf ein Panel2 auf ein Panel1 zu packen. Bei Start des DnD wird Panel2 deaktiviert und am Ende wieder aktiviert. Panel1 nimmt die DnD-Operation an.

Ja, das hat den gewünschten Effekt erzielt. Danke. :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:43 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