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/)
-   -   Prism Drag & Drop mit Panel und TreeView: Merkwürdiges Verhalten (https://www.delphipraxis.net/89052-drag-drop-mit-panel-und-treeview-merkwuerdiges-verhalten.html)

Alexander 25. Mär 2007 11:51


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:
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;
Bei meinem Panel diesen:
Delphi-Quellcode:
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;
Theoretisch müsste es funktionieren. Der Fehler scheint irgendwie in Self_DragDrop zu sein.
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?

Alexander 26. Mär 2007 12:27

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 11: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