Xojo 语言 拖放 Drag 功能基础启用

Xojoamuwap 发布于 2 天前 2 次阅读


Xojo【1】 拖放(Drag)功能基础教程

Xojo 是一种多平台编程语言,它允许开发者使用相同的代码在 Windows、macOS、Linux、iOS 和 web 上创建应用程序。在 Xojo 中,拖放(Drag)功能是一种非常直观且强大的用户界面元素,它允许用户通过拖动对象来执行操作。本文将深入探讨 Xojo 中拖放功能【2】的基础,并提供一些实用的代码示例。

拖放功能简介

在 Xojo 中,拖放功能通常涉及以下几个关键组件:

1. 拖动源【3】(Drag Source):提供拖动数据【4】的对象。
2. 拖动数据(Drag Data):被拖动的数据,可以是文本、图片或其他任何类型的数据。
3. 拖动目标【5】(Drag Target):可以接收拖动数据的对象。

创建拖动源

要创建一个拖动源,你需要确保你的 Xojo 控件支持拖放。大多数 Xojo 控件默认支持拖放,但如果你需要自定义拖放行为,你可以通过设置控件的 `DragEnabled【6】` 属性来实现。

以下是一个简单的例子,展示如何使一个按钮成为拖动源:

xojo_code
Button1.DragEnabled = True

设置拖动数据

一旦你的控件成为拖动源,你需要设置它拖动的数据。这可以通过 `DragData【7】` 属性来完成。以下是如何设置一个按钮拖动其文本的示例:

xojo_code
Button1.DragData = Button1.Text

创建拖动目标

要创建一个拖动目标,你需要确保你的控件可以接收拖动数据。这通常意味着你需要重写控件的 `DragOver【8】` 和 `Drop【9】` 方法。

以下是一个简单的例子,展示如何使一个文本框成为拖动目标:

xojo_code
TextField1.DragOver = TextField1_DragOver
TextField1.Drop = TextField1_Drop

重写 `DragOver` 方法

`DragOver` 方法用于确定拖动操作是否应该继续。以下是一个简单的 `DragOver` 方法示例,它允许文本框接收任何类型的拖动数据:

xojo_code
Procedure TextField1_DragOver(DragInfo As DragInfo)
DragInfo.AllowedActions = DragInfo.AllowedActions Or DragActionCopy
End Procedure

重写 `Drop` 方法

`Drop` 方法用于处理实际的数据放置。以下是一个简单的 `Drop` 方法示例,它将接收到的文本数据放入文本框中:

xojo_code
Procedure TextField1_Drop(DragInfo As DragInfo)
If DragInfo.DataTypes.Count > 0 Then
If DragInfo.DataTypes.Item(0) = "text/plain" Then
Me.Text = DragInfo.Data
End If
End If
End Procedure

完整示例

以下是一个完整的 Xojo 项目示例,它包含一个拖动源(按钮)和一个拖动目标(文本框):

```xojo_code
class MyWindow
property Title as String = "Drag and Drop【10】 Example"
property Width as Integer = 400
property Height as Integer = 300
property Resizable【11】 as Boolean = False
property CloseButton as Boolean = True
property HasBackgroundColor as Boolean = True
property BackgroundColor as Color = &cFFFFFF
property HasMinimizeButton as Boolean = False
property HasMaximizeButton as Boolean = False
property HasFullScreenButton as Boolean = False
property WindowStyle【12】 as WindowStyle = WindowStyle.Standard
property HasShadow as Boolean = True
property HasTitleBar as Boolean = True
property TitleBarHeight as Integer = 32
property CanResize as Boolean = False
property AllowsDrag as Boolean = True
property AllowsDrop as Boolean = True
property AllowAutoLayout【13】 as Boolean = True
property AllowLayout as Boolean = True
property AllowResize as Boolean = False
property AllowZoom【14】 as Boolean = False
property AllowMultiple【15】 as Boolean = False
property AllowReorder【16】 as Boolean = False
property AllowDelete【17】 as Boolean = False
property AllowAdd【18】 as Boolean = False
property AllowEdit【19】 as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop【20】 as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean = False
property AllowAdd as Boolean = False
property AllowEdit as Boolean = False
property AllowDrag as Boolean = True
property AllowDrop as Boolean = True
property AllowResize as Boolean = False
property AllowZoom as Boolean = False
property AllowMultiple as Boolean = False
property AllowReorder as Boolean = False
property AllowDelete as Boolean =