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?