了解拖动操作

To"拖动"在鼠标移动时按住计算机鼠标按钮,然后释放按钮以放下对象。Delphi可以轻松编程拖动和丢弃到应用程序中。

您可以在您喜欢的任何地方拖动,例如从一种形式到另一种形式,或者从Windows Explorer到应用程序。

拖动示例

启动一个新项目并在一个表单上放置一个图像控制。使用对象检查器加载图片(图片属性),然后将DragMode属性设置为dmManual。我们'将创建一个程序,允许使用拖动技术移动TImage控制运行时。

DragMode

组件允许两种类型的拖动:自动和手动。Delphi使用DragMode属性来控制用户何时能够拖动控件。默认值此属性为dmManual,这意味着不允许在应用程序周围拖动组件,除非在特殊情况下我们必须为其编写适当的代码。无论DragMode属性的设置如何,只有在写入正确的代码重新定位它时,组件才会移动。

OnDragDrop

识别拖动的事件称为OnDragDrop事件。我们使用它来指定当用户丢弃对象时我们想要发生的事情。因此,如果我们想将组件(图像)移动到表单上的新位置,我们必须为表单's OnDragDrop事件处理器编写代码。

OnDragDrop事件的源参数是正在丢弃的对象。源参数的类型是主题。要访问其属性,我们必须将其转换为正确的组件类型,在此示例中为TImage。

接受

我们必须使用表格's OnDragOver event来表明表格可以接受TImage控制我们想放在它上。尽管Accept参数默认为True,但如果未提供OnDragOver事件处理程序,则控件将拒绝拖动的对象(就好像Accept参数更改为False一样)。

运行您的项目,然后尝试拖动图像。请注意,拖动鼠标指针移动时,图像在其原始位置保持可见。在拖动发生时,我们不能使用OnDragDrop过程来使组件不可见,因为只有在用户丢弃对象(如果有的话)之后才调用此过程。

DragCursor

如果要更改拖动控件时显示的光标图像,请使用DragCursor属性。DragCursor属性的可能值与光标属性的值相同。您可以使用动画光标或任何您喜欢的,如BMP图像文件或CUR光标文件。

BeginDrag

如果DragMode是dmAutomatic,则当我们在控件上按下光标时,拖动会自动开始。如果您've将TImage's DragMode属性的值保留为dmManual的默认值,则必须使用BeginDrag/EndDrag方法来拖动组件。拖动的更常见方法是将拖动模式设置为dmManual,并通过处理鼠标放下事件来开始拖动。

现在,我们'将使用Ctrl+MouseDown键盘组合来进行拖动。将TImage's DragMode设置回dmManual,并像这样编写MouseDown事件处理程序:

BeginDrag采用布尔参数。如果我们通过True(如本代码),则拖动立即开始;如果为False,则不开始'直到我们将鼠标移动短距离。请记住,它需要Ctrl键。