getdata 方法

应用于 请参阅

从 OLE 拖放 DataObject 对象获取数据。只在设计时可用。

语法

oDataObject.GetData(nFormat | cFormat [, @ArrayName])

参数

nFormat | cFormat

指定要获取数据的格式。下表列出了每种数据格式的值以及说明。DataObject 自动支持下列格式(还有其他格式可用,但是需要额外的编程)。有关可用数据格式的详细内容,请在MSDN( Microsoft DeveloperNetwork) 中查看有关 Visual C++ 的文档。

数据格式* nFormat | cFormat 说明
CF_TEXT 1 文本格式。
CF_OEMTEXT 7 包含 OEM 字符集中字符的文本格式。
CF_UNICODETEXT 13 Unicode 文本格式,只在Windows NT 下可用。
CF_FILES or CF_HDROP 15 一个标识一组文件的句柄,例如从 Windows 资源管理器拖来的一组文件。
CF_LOCALE 16 与剪贴板上文本相关的本地标识符的句柄。
CFSTR_OLEVARIANTARRAY "OLE Variant Array" 一个 Visual FoxPro 数组。使用这个格式在一次拖放中可以传送多个值。例如,这个格式可以用于将列表框中的一些项拖动到另一个列表框中。
CFSTR_OLEVARIANT "OLE Variant" 一个 Visual FoxPro 变量。Visual FoxPro 中的所有数据类型都可以用变量代表。这个格式可以用于拖放 Visual FoxPro 数据,并且不丢失数据类型。
CFSTR_VFPSOURCEOBJECT "VFP SourceObject" 对一个 Visual FoxPro 对象的引用。

* 在 FOXPRO.H 中定义。

@ArrayName

指定数组的名称,当数据可以包含多个值时,将数据保存在这里。数据可以包含多个值的数据格式只有 CF_FILES、CF_HDROP 和 CFSTR_OLEVARIANTARRAY。例如,可以从 Windows 资源管理器中将一组文件拖动到 Visual FoxPro 的一个列表框中。使用列表框 OLEDragDrop 事件中的 getdata 方法,可以将这些文件的名称放到一个数组,然后在 FOR...ENDFOR 循环中使用 AddItem 方法将数组中的内容添加到列表框中。

在 getdata 方法中指定数组名称时,该数组必须存在。如果该数组存在,但是不足以包含所需的数据,Visual FoxPro 自动增加该数组的大小。如果该数组比所需大,VisualFoxPro 会截断该数组。

说明

getdata 方法返回的值取决于 nFormat 或 cFormat 指定的数据格式。如果DataObject 不包含在 nFormat 或 cFormat 指定的数据格式的数据,则返回“假”(.T.)。如果数据符合多值格式,例如 CF_FILES、CF_HDROP 或CFSTR_OLEVARIANTARRAY,则返回“真” (.T.)。如果数据符合单值格式时,例如CF_TEXT、CFSTR_OLEVARIANT 或 CFSTR_VFPSOURCEOBJECT,则返回DataObject 中的值。

如果使用 nFormat 或 cFormat 指定的数据格式存在,但是在 DataObject 中没有这种格式的数据,则触发一个拖动源的 OLESetData 事件。(在使用 SetData 方法将相应数据放在 DataObject 中之前,可以使用 SetFormat 方法指定一种数据格式。)