Delphi 将TButton从一个窗体拖到另一个窗体

Delphi 将TButton从一个窗体拖到另一个窗体,delphi,forms,button,drag-and-drop,Delphi,Forms,Button,Drag And Drop,我有一个Delphi GUI应用程序(使用RAD studio 2010),我希望用户能够重新安排他的工作区。我知道如何使TButtons可以在同一表单中拖动,但不知道如何让用户能够将按钮从一个表单拖动到另一个表单。当您单击并尝试拖动TButton时,我认为它不会将其视为拖放操作。如何使TButton能够跨多个窗体进行拖放?使用目标窗体的OnDragDrop事件更新按钮的父属性。我不知道如何使用Delphi版本的DragDrop进行拖放,但它非常适合使用 IDataObject 及 除非现在您

我有一个Delphi GUI应用程序(使用RAD studio 2010),我希望用户能够重新安排他的工作区。我知道如何使TButtons可以在同一表单中拖动,但不知道如何让用户能够将按钮从一个表单拖动到另一个表单。当您单击并尝试拖动TButton时,我认为它不会将其视为拖放操作。如何使TButton能够跨多个窗体进行拖放?

使用目标窗体的OnDragDrop事件更新按钮的父属性。

我不知道如何使用Delphi版本的DragDrop进行拖放,但它非常适合使用

IDataObject


除非现在您被迫使用Windows自己的API进行拖放,而不是Delphi有限的模拟。

首先,将按钮的DragMode设置为dmAutomatic,或者在按钮上发生鼠标按下时手动调用BeginDrag。然后使用要拖动到的窗体的OnDragOver+OnDragDrop事件。

OnDragDrop事件不会被触发。@John-您是在调用(在
OnMouseDown
)还是将
DragMode
属性设置为
dmAutomatic
IDropTarget