类对象支持库(不是扁平命令)。路径:支持库 → 拖放类。
类型名必须写完整「拖放类」。声明时自动创建,一般无需再调 创建*。
硬约束
- 类型名必须写「拖放类」。
- 用于接收/发起文件或文本拖放;常绑定到窗口或控件。
- 事件回调在 UI 线程,勿长时间阻塞。
- 方法调用必须带括号。
快速开始(对齐常见 GUI:注册 → 拖入 → 取路径)
拖放类 td
函数 主窗口.创建完毕() {
td.注册(文本框1) // 注册后即可拖文件;不必先置回调
}
函数 按钮1.单击(整数 X, 整数 Y) {
文本 列表[] = td.取路径列表() // 用户拖入完成后再取
输出("共 " + 到文本(td.取路径数()) + " 个")
整数 i = 0
循环 (数组长度(列表), i) {
输出(列表[i])
}
}
可选:需要「拖入当时」立刻处理时再 td.置回调(&拖入)。
拖放类/创建
共 1 条。
创建拖放
- 签名:
通用 创建拖放() - 说明:创建一个拖放对象。一般直接写「拖放类 td」即可(声明时自动创建);「创建拖放()」仅在需要显式赋值时使用。
拖放类/事件
共 1 条。
文件拖入
- 签名:
无 文件拖入(子程序指针 回调) - 说明:注册文件拖入回调(同 置回调);传 0 清除。每拖入一个路径、且命中已注册目标时调用一次。
- 参数一│子程序指针 回调: 须指向已定义函数。形参固定为: 函数 名(整数 句柄, 文本 路径) · 句柄:对应 注册() 的返回值(标识符;多目标时用它区分)。 · 路径:完整本地路径(支持中文)。 · 一次拖多个文件会连续回调多次。
拖放类/方法
共 13 条。
置回调
- 签名:
无 置回调(子程序指针 回调) - 说明:设置文件拖入回调(推荐名;与 文件拖入 等价)。传 0 清除。多目标注册时,回调第一参「句柄」区分是哪个 注册() 命中。
- 参数一│子程序指针 回调: 须指向已定义函数。形参固定为: 函数 名(整数 句柄, 文本 路径) · 句柄:注册() 返回值,用来区分多个拖放目标。 · 路径:完整本地路径(支持中文)。 · 一次拖多个文件会连续回调多次。
注册
- 签名:
整数 注册(组件名 目标) - 说明:开启该窗口/组件的文件拖入(类似 setAcceptDrops)。成功返回句柄,失败返回 0。注册后即可拖,无需先置回调。
- 参数一│组件名 目标: 直接写设计器中的名称,无需引号;「主窗口」=整窗;其它为控件名。
- 拖入完成后用
取路径列表()读取本次路径;不会自动把路径写入文本框/多行编辑框。 - 需要显示路径时自行:
文本 列表[] = td.取路径列表()再写入控件。 置回调仅在需要拖入当时通知时使用(可选)。
撤销注册
- 签名:
逻辑 撤销注册([整数/整数数组 句柄集合]) - 说明:撤销一个、多个或本对象全部拖放注册。返回逻辑(真=已处理)。
- 参数一│[整数/整数数组 句柄集合]: 省略=撤销本对象全部;整数=撤销指定句柄;整数数组=批量撤销。
取路径列表
- 签名:
文本数组 取路径列表() - 说明:返回最近一次命中本对象注册目标的拖入路径(文本数组)。在用户已经拖入之后调用;注册当下尚未拖过则为空。
取路径数
- 签名:
整数 取路径数() - 说明:返回最近一次拖入的路径个数。
清空路径
- 签名:
无 清空路径() - 说明:清空本对象缓存的最近一次拖入路径列表。
取注册数
- 签名:
整数 取注册数() - 说明:返回本对象当前有效的注册个数。
取句柄列表
- 签名:
通用 取句柄列表() - 说明:返回本对象全部注册句柄(整数数组)。
是否已注册
- 签名:
逻辑 是否已注册(整数 句柄) - 说明:判断指定句柄是否仍为本对象的有效注册。
- 参数一│整数 句柄: 注册() 返回的标识符。
取目标名
- 签名:
文本 取目标名(整数 句柄) - 说明:按句柄取注册时的窗口名或组件名;无效句柄返回空文本。
- 参数一│整数 句柄: 注册() 返回的标识符。
按名称取句柄
- 签名:
整数 按名称取句柄(组件名 目标) - 说明:按目标名查找本对象中第一个匹配的注册句柄;未找到返回 0。
- 参数一│组件名 目标: 与 注册() 时传入的名称一致,无需引号。
启用
- 签名:
逻辑 启用(整数 句柄, 逻辑 是否启用) - 说明:临时启用或停用指定注册(不停用其它目标)。返回逻辑(真=句柄有效)。
- 参数一│整数 句柄: 注册() 返回的标识符。
- 参数二│逻辑 是否启用: 真=接收拖入;假=忽略该目标。
是否启用
- 签名:
逻辑 是否启用(整数 句柄) - 说明:查询指定句柄当前是否启用接收拖入。无效句柄返回假。
- 参数一│整数 句柄: 注册() 返回的标识符。
易错对照
| 错误 | 正确 |
|---|---|
| 类型写成「拖放」 | 必须「拖放类」 |
| 事件里做重活 | UI 线程短逻辑,重活丢线程 |