![]() |
Drag & Drop mit Panel und TreeView: Merkwürdiges Verhalt
Hallo :)
Ich spiele gerade ein wenig mit Drag und Drop mit einem TreeView und einem Panel (genauer gesagt, Klasse abgeleitet vom Panel) herum. Auf dem Panel sollen dann die Nodes als Button erscheinen. Letzteres funktioniert auch schon, daran liegt es also nicht. Bei beiden Komponenten (Panel und Treeview) ist selbstverständlich AllowDrop auf true. Bei der Treeview habe ich folgenden Code:
Delphi-Quellcode:
Bei meinem Panel diesen:
procedure TCreateControllingData.TView_AllFields_ItemDrag(sender: System.Object; e: System.Windows.Forms.ItemDragEventArgs);
begin TView_AllFields.DoDragDrop(DataObject.Create('System.Windows.Forms.TreeNode', TView_AllFields.SelectedNode), DragDropEffects.Move) end;
Delphi-Quellcode:
Theoretisch müsste es funktionieren. Der Fehler scheint irgendwie in Self_DragDrop zu sein.
procedure TDCubeButtonPanel.Self_DragEnter(sender: System.Object; e: System.Windows.Forms.DragEventArgs);
begin if (e.Data.GetDataPresent('System.Windows.Forms.TreeNode')) then e.Effect := DragDropEffects.Move else e.Effect := DragDropEffects.None; end; procedure TDCubeButtonPanel.Self_DragDrop(sender: System.Object; e: System.Windows.Forms.DragEventArgs); var node : TreeNode; begin if (e.Data.GetDataPresent('System.Windows.Forms.TreeNode')) then begin node := e.Data.GetData('System.Windows.Forms.TreeNode') as TreeNode; fButtons.Add(node.index.toString); createButtons; end; end; Die Methode wird ausgeführt, die If-Bedingung wird akzeptiert, die ArrayList fButtons wird auch gefüllt, nur createButtons dann nicht mehr :?. Er hört da einfach auf :?. Habt ihr eine Idee, woran das liegen könnte? |
Re: Drag & Drop mit Panel und TreeView: Merkwürdiges Ver
Gerade noch einmal versucht und so funktioniert's:
Delphi-Quellcode:
procedure TDCubeButtonPanel.Self_DragDrop(sender: System.Object; e: System.Windows.Forms.DragEventArgs);
var node : TreeNode; begin if (e.Data.GetDataPresent(typeof(TreeNode))) then begin node := e.Data.GetData(typeof(TreeNode)) as TreeNode; fButtons.Insert(getBtnIndexAtPos(Self.PointToClient(Point.Create(e.X,e.Y))), node.index.toString); createButtons; end end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:29 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