_OLECompleteDrag(当源部件被放到目标部件时发生,并通知源部件拖放操作被执行或取消。
语法:
Private Sub object_OLECompleteDrag([effect As Long])
Effect
源对象设置的长整型数,用来识别执行的动作,这样当部件被移动后允许源采取适当的动作(例如,如果源被从一个部件移到另一个部件,则执行删除数据操作)。可能的取值列于“设置值”中。
effect 设置值:
VbDropEffectNone 0 放目标不接受数据, 或者放操作被取消。
VbDropEffectCopy 1 放结果保存于从源到目标的数据拷贝中。初始数据没有被拖放操作改变。
VbDropEffectMove 2 放结果保存于初始数据的连接中,该数据是在拖放源和放目标之间产生的。
说明:
OLECompleteDrag 事件是 OLE
拖放操作最后调用的事件。当对象被放到目标部件时,此事件通知源部件所执行的动作。目标通过 OLEDragDrop 事件的
effect 参数设置此值。基于此,源可决定需采取的适当动作。例如,若对象被移到目标 (vbDropEffectMove),移动后源需要在自身删除该对象。
如果 OLEDragMode 设置为 Automatic,则 Visual Basic
执行缺省的动作。此事件仍然发生,允许添加或改变动作。
大部分部件支持人工 OLE 拖放事件,也有一些支持自动化 OLE 拖放事件。
_OLEDragDrop(
当源部件决定放操作能发生,且源部件被放到目标部件时,此事件发生。
注意 仅当 OLEDropMode 被设置为 1 (Manual) 时,此事件才发生。
语法:
Private Sub object_OLEDragDrop(data As DataObject, effect As
Long, button As Integer, shift As Integer, x As Single, y As
Single)
Data DataObject 对象,包含源提供的格式,另外也可能包含这些格式的数据。若 DataObject
不包含数据,则当控件调用 GetData 方法时提供数据。SetData 和 Clear 方法不能用在这里。
Effect
源对象设置的长整型数,用来识别执行的动作,这样当部件被移动后允许源采取适当的动作(例如,如果源被从一个部件移到另一个部件,则执行删除数据操作)。可能的取值列于“设置值”中。
Button 整数,当按下鼠标键时,与鼠标状态相对应。左键为位 0,右键为位 1,中键为位 2。这些位相应的值分别为 1,2 和
4,它代表了鼠标键的状态。可设置三个位中的部分、全部或根本不设置,相应地表明部分、全部按键被按下或没有按键按下。
Shift 整数,当按下 SHIFT、ctrl 和 ALT 键时,与这些键状态相对应。 shift 键为位 0,ctrl 键为位
1,alt 键为位 2。这些位相应的值分别为 1,2 和 4,shift
参数代表了这些键的状态。可设置三个位中的部分、全部或根本不设置,相应地表明部分、全部按键被按下或没有按键按下。例如,同时按下
ctrl 和 ALT 键,shift 值为 6。
x,y 确定鼠标指针当前位置的数值。x 和 y 值由对象的 ScaleHeight、ScaleWidth、ScaleLeft 和
ScaleTop 属性设置的坐标系统的格式来表示。
VbDropEffectScroll -2147483648一个掩码,指出放下目标窗口已经滚动或应该滚动。
effect 设置:
VbDropEffectNone 0 放目标不接受数据。
VbDropEffectCopy 1 放结果保存于从源到目标的数据拷贝中。初始数据没有被拖放操作改变。
VbDropEffectMove 2 放结果保存于要从拖放源移到放源的数据中。移动后,拖放源要删除数据。
说明:
源 ActiveX 部件应总是屏蔽 effect 参数值,以确保同将来实现的 ActiveX 部件兼容。目前,仅使用了
effect 参数 32 位中的 3 位,然而将来的 Visual Basic 版本就可能用到其它位。所以考虑到将来的问题,
拖源和放目标在进行任何比较之前应屏蔽这些值。
例如,源部件不能把 effect 同 vbDropEffectCopy 相比,如:
If Effect = vbDropEffectCopy...
而是应该屏蔽该值或被搜寻的值,如:
If Effect And vbDropEffectCopy = vbDropEffectCopy...
-或-
If (Effect And vbDropEffectCopy)...
这样,允许在 Visual Basic 新版本中定义新的放效果,并与现存的代码保持向后兼容性。
大部分部件支持人工 OLE 拖放事件,也有一些支持自动化 OLE 拖放事件。
_OLEDragOver(
当一个部件在另一个部件上拖动时发生。
语法:
Private Sub object_OLEDragOver(data As DataObject, effect As
Long, button As Integer, shift As Integer, x As Single, y As
Single, state As Integer)
data DataObject 对象,包含源提供的格式,另外也可能包含这些格式的数据。若 DataObject
不包含数据,则当控件调用 GetData 方法时提供数据。SetData 和 Clear 方法不能用在这里。
effect 源对象最初设置的长整型数,用来识别它支持的效果。在事件过程中,此参数必须被目标部件正确地设置。effect
值由所有活动的效果(如设置值表)逻辑 Or
确定。目标部件应检查这些效果以及其它参数以确定哪个动作适合于它,然后把此参数设置为允许的效果之一(如源所规定),以便确定放置选项到部件该执行哪个动作。可能的取值列于“设置值”中。
button 整数,当按下鼠标键时,与鼠标状态相对应。左键为位 0,右键为位 1,中键为位 2。这些位相应的值分别为 1,2 和
4,它代表了鼠标键的状态。可设置三个位中的部分、全部或根本不设置,相应地表明部分、全部按键被按下或没有按键按下。
shift 整数,当按下 SHIFT、CTRL 和 ALT 键时,与这些键状态相对应。SHIFT 键为位 0,CTRL 键为位
1,ALT 键为位 2。这些位相应的值分别为 1,2 和 4,shift
参数代表了这些键的状态。可设置三个位中的部分、全部或根本不设置,相应地表明部分、全部按键被按下或没有按键按下。例如,同时按下
CTRL 和 ALT 键,shift 值为 6。
x,y 在目标窗体或控件中, 规定当前鼠标指针水平 (x) 和垂直 (y) 位置的数。x 和 y 值由对象的
ScaleHeight、ScaleWidth、ScaleLeft 和 ScaleTop 属性设置的坐标系统格式来表示。
state 整数,相应于控件的转换状态,此控件将被拖放到与其相关的目标窗体或控件中。可能的取值列于“设置值”中。
effect 设置:
vbDropEffectNone 0 放目标不接受数据。
VbDropEffectCopy 1 放结果保存于从源到目标的数据拷贝中。初始数据没有被拖放操作改变。
VbDropEffectMove 2 放结果保存于要从拖放源移到放源的数据中。移动后,拖放源要删除数据。
vbDropEffectScroll -2147483648
(&H80000000)
在目标部件中,滚动正在或将要发生。此值与其它值共同使用。注意 仅当在部件中执行自己的滚动时才能应用。
state 设置:
vbEnter 0 在目标范围内源部件正被拖动。
VbLeave 1 在目标范围之外源部件正被拖动。
VbOver 2 在目标内源部件已经从一个位置移到另一个位置。
说明:
注意 如果 state 参数是 vbLeave,表明鼠标指针已离开目标,则 x 和 y 参数保持为零值。
源 ActiveX 部件应总是屏蔽 effect 参数值,以确保同将来实现的 ActiveX 部件兼容。现在仅使用了
effect 参数 32 位中的 3 位,然而将来的 Visual Basic
版本就可能用到其它位。所以考虑到将来的问题,拖源和放目标在进行任何比较之前应屏蔽这些值。
例如,源部件不能把 effect 同 vbDropEffectCopy 相比,如:
If Effect = vbDropEffectCopy...
而应屏蔽该值或被搜寻的值,如:
If Effect And vbDropEffectCopy = vbDropEffectCopy...
-或-
If (Effect And vbDropEffectCopy)...
允许在 Visual Basic 新版本中定义新的放效果,并与现存的代码保持向后兼容性。
大部分部件支持人工 OLE 拖放事件,也有一些支持自动化 OLE 拖放事件。
_OLEGiveFeedback(
在每个 OLEDragOver 事件后发生。OLEGiveFeedback
允许源部件提供可视的反馈,例如通过改变鼠标的图标来表明放目标后将发生什么,或者在选项上提供可视的反馈(在源部件中)以指出将发生什么。
语法:
Private Sub object_OLEGiveFeedback(effect As Long,
defaultcursors As Boolean)
effectt 在 OLEDragOver 事件中目标部件设置的长整型数,
若放选定项,则由此数确定要执行的动作。允许源采取合适的动作(例如给出可视的反馈)。可能的取值列于“设置值”中。
defaultcursors 布尔值,决定 Visual Basic 使用部件缺省鼠标图标,还是自定义鼠标图标。
True(缺省) = 使用缺省鼠标图标。
False = 不用缺省图标。必须用 Screen 对象的 MousePointer 属性设置鼠标图标。
effect 设置:
vbDropEffectNone 0 放目标不接受数据。
vbDropEffectCopy 1 放结果保存于从源到目标的数据拷贝中。初始数据没有被拖放操作改变。
vbDropEffectMove 2 放结果保存于要从拖放源移到放源的数据中。移动后,拖放源要删除数据。
vbDropEffectScroll -2147483648
(&H80000000)
在目标部件中,滚动正在或将要发生。此值与其它值共同使用。注意仅当在部件中执行自己的滚动时才能应用。
说明:
如果 OLEGiveFeedback 事件中没有代码,或者如果 defaultcursors 参数设为 True,则
Visual Basic 自动地把鼠标图标设为部件提供的缺省图标。
源 ActiveX 部件应总是屏蔽 effect 参数值,以确保同将来实现的 ActiveX 部件兼容。现在仅使用了
effect 参数 32 位中的 3 位,然而将来的 Visual Basic
版本就可能用到其它位。所以考虑到将来的问题,拖源和放目标在进行任何比较之前应屏蔽这些值。
例如,源部件不能把 effect 同 vbDropEffectCopy 相比,如:
If Effect = vbDropEffectCopy...
而应屏蔽该值或被搜寻的值,如:
If Effect And vbDropEffectCopy =
vbDropEffectCopy...
-或-
If (Effect And vbDropEffectCopy)...
允许在 Visual Basic 新版本中定义新的放效果,并与现存的代码保持向后兼容性。
大部分部件支持人工 OLE 拖放事件,也有一些支持自动化 OLE 拖放事件。
_OLESetData(
当目标部件在源的 DataObject 对象上执行 GetData 方法,但是还没有加载规定格式的数据时,在源部件上发生。
语法:
Private Sub object_OLESetData(data As DataObject, dataformat As
Integer)
data 放置所需数据的 DataObject 对象。部件调用 SetData 方法加载所需的格式。
dataformat 整数,确定目标部件所需要的数据格式。源部件用此值来确定向 DataObject 对象加载的内容。
说明:
在某些情况下,特别是在源部件支持多种格式时,可能希望延迟向源部件 DataObject
对象加载数据以节省时间。此事件允许源对给定的数据格式仅响应一个请求。调用此事件时,源应该检查 format
参数以确定需加载的内容,然后在 DataObject 上执行 SetData 方法加载数据,这些数据随后被送回到目标部件。
_OLEStartDrag(
当部件的 OLEDrag 方法被执行时,或者在 OLEDragMode 属性被设为 Automatic,部件初始化 OLE
拖放操作时发生。
此事件指定源部件支持的数据格式和放效果。也可用于向 DataObject 对象中插入数据。
语法:
Private Sub object_OLEStartDrag(data As DataObject,
allowedeffects As Long)
data DataObject 对象,含源所提供的格式以及(可选)适合那些格式的数据。若 DataObject
不包含数据,则当控件调用 GetData 方法时会提供。程序员应提供此事件中该参数的值。SetData 和 Clear
方法不能用于此处。
allowedeffects 长整型数,包含源部件支持的效果。其可能的取值列于“设置值”中。程序员应提供此事件中该参数的值。
allowedeffects 设置:
vbDropEffectNone 0 放目标不接受数据。
VbDropEffectCopy 1 放结果保存于从源到目标的数据拷贝中。初始数据没有被拖放操作改变。
VbDropEffectMove 2 放结果保存于要从拖源移到放源的数据中。移动后,拖源要删除数据。
说明:
源部件应该针对所支持的数据使用逻辑 Or 运算符,并把结果放到 allowedeffects
参数中。目标部件使用此值确定合适的动作(以及合适的用户反馈)。
如果部件的 OLEDragMode 属性被设为 Automatic,OLEStartDrag
事件也会发生。这样就允许在部件执行该操作后,再次向 DataObject 对象加入格式及数据。也可以通过清除
DataObject 对象(用 Clear 方法)忽略部件的缺省行为,然后加入自己的数据和格式。
除非目标部件需要,可能希望延迟向 DataObject
对象中加载数据。这样,由于没有加载多余的数据格式,使源部件节省了时间。当目标在 DataObject 上执行 GetData
方法时,若 DataObject 中未包含所需的数据,则源的 OLESetData 事件会发生。此时,数据可被加载到
DataObject 中,这将依次地向目标提供数据。
|