DataObject 类
DataObject是一个容器,以一个或多个剪贴板格式保存一条信息——同一有效负载表示为纯文本、Unicode文本、RTF、位图、文件路径列表等。运行时将DataObject传递给剪贴板和OLE拖放操作:源端使用SetData填充数据,目标端使用GetFormat(或AvailableFormats)检查可用格式,并使用GetData提取字节。
新的DataObject使用New创建,初始为空。
存储和检索数据
SetData将值以给定剪贴板格式放入DataObject——通常为ClipboardConstants枚举中的值,如vbCFText、vbCFUnicodeText或vbCFBitmap。单个对象可以同时以多种格式保存相同的逻辑有效负载,使有不同需求的消费者都能找到其理解的表示。
Dim Data As New DataObject
Data.SetData "Hello, world!", vbCFText
Data.SetData StrConv("Hello, world!", vbUnicode), vbCFUnicodeTextGetData以选定格式取回值。Clear一次性移除所有格式和值——在重用单个DataObject进行多次操作时很有用。
twinBASIC还接受纯字符串作为格式名称:GetDataByName是GetData的字符串键对应版本,适用于数字标识符未预先知道的自定义或注册格式。
发现可用内容
未自行放置数据的消费者通常不知道存在哪些格式。GetFormat在给定剪贴板格式可用时返回True,GetFormatByName对命名的格式执行相同操作。要发现完整集合,AvailableFormats返回DataObjectFormats集合,包含DataObjectFormat描述符——每个描述符具有Name、来自ClipboardConstants的FormatType以及格式存储方式的信息。
Dim F As DataObjectFormat
For Each F In Data.AvailableFormats
Debug.Print F.Name, F.FormatType
Next FINFO
AvailableFormats、GetFormatByName和GetDataByName是twinBASIC新增功能;VB6中没有对应功能。
文件
当DataObject包含文件路径列表时——例如Windows Shell拖放的有效负载——Files返回DataObjectFiles集合,以String形式保存每个路径。
Dim Path As Variant
For Each Path In Data.Files
Debug.Print Path
Next Path成员
- AvailableFormats -- 返回DataObject中当前保存的格式集合 (twinBASIC扩展)
- Clear -- 从DataObject中移除所有格式和值
- Files -- 返回DataObject中保存的文件路径集合
- GetData -- 返回以给定剪贴板格式存储的值
- GetDataByName -- 返回以给定命名格式存储的值 (twinBASIC扩展)
- GetFormat -- 返回DataObject是否保存给定剪贴板格式的值
- GetFormatByName -- 返回DataObject是否保存给定命名格式的值 (twinBASIC扩展)
- SetData -- 以给定剪贴板格式在DataObject中存储值