二级VB辅导:启动OLE拖动操作
如果要指定支持哪种数据格式或拖放效果(复制、移动或放下),或者如果要从中拖动数据的控件不支持自动拖动,则需要使用手动OLE拖动操作。
手动拖放操作的第一阶段是调用OLEDrag方法,设置允许的拖放效果,指定支持的数据格式,并有选择地将数据放入DataObject对象中。
使用OLEDrag方法手动启动拖动操作,使用OLEStartDrag事件指定允许的拖放效果和支持的数据格式。
OLEDrag方法
一般来说,选择数据后,按住鼠标左键移动鼠标时,从对象的MouseMove事件调用OLEDrag方法。
OLEDrag方法不提供任何参数。它的主要目的是启动手动拖动,然后允许OLEStartDrag事件设置拖动操作的条件(例如,指定将数据拖动到另一个控件时会发生什么)。
如果源代码管理支持OLEDragMode属性,为了手动控制拖动操作,该属性必须设置为“Manual ”,并且必须在控件上使用OLEDrag方法。如果控件支持手动OLEDrag但不支持自动OLE drag,则它没有OLEDragMode属性,但支持OLE drag方法和OLE拖放事件。
注意如果源代码管理的OLEDragMode属性设置为Automation,OLEDrag方法仍然有效。
指定拖放效果和数据格式
在手动OLEDrag操作中,当用户开始拖动源并调用OLE drag方法时,会发生控件的OLEStartDrag事件。使用此事件指定拖放效果和源支持的数据格式。
OLEStartDrag事件用两个参数指定支持的数据格式,并指定在放下数据时是复制数据还是移动数据(放下效果)。
请注意,如果在OLEStartDrag事件中没有指定拖放效果和数据格式,将不会启动手动拖动。
AllowedEffects参数
allowedeffects参数指定拖动源支持的拖放效果。示例:
private sub txt source _ ole startdrag(data as _ VB . data object,allowed effects as long)allowed effects = vbdropeffectmove或_ vbdropeffectcopyedsub
然后,目标可以向拖动源查询这些信息,并做出相应的响应。
allowedeffects参数使用以下值指定放置效果:
常量值说明
vbdropfeffectone 0放置目标不能接受数据。
vbdropfeffectCopy 1的拖放结果是copy。拖动源不会更改原始数据。
vbdropfeffectmove 2拖动源删除数据。
参数
可以通过设置OLEStartDrag事件的Format参数来指定对象支持的数据格式。为此,应该使用SetData方法。例如,以格式文本框控件为源,以文本框控件为目标,可以指定以下支持的格式:
Private su B- rtb source _ ole startdrag(Data As _ VB . Data object,allowed effects As Long)allowed effects = vbDropEffectMove或_ vbDropEffectCopy Data。SetData,vbCFText数据。SetData,vbCFRTFEnd Sub
目标可以查询源,这样它就可以判断支持哪种数据格式,并做出相应的响应——例如,如果目标不支持丢弃的数据的格式,它就会拒绝丢弃的数据。在这种情况下,只有源支持的数据格式是文本格式和富文本格式。
详细信息有关SetData方法的格式值的更多信息,请参见“OLE拖放DataObject对象”。
将数据放入DataObject对象。
在大多数情况下,尤其是当源支持两种以上的格式或者创建数据需要很多时间时,您可能希望仅在目标请求数据时才将其放入DataObject对象。但是,您可以使用OLEStartDrag事件中的SetData方法在拖动操作开始时将数据放入DataObject对象中。例如:
private Sub txt source _ OLEStartDrag(Data As _ VB。DataObject,AllowedEffects As Long)数据。清除数据。SetData txtSource。SelText,vbCFTextEnd Sub
本示例使用Clear方法清除DataObject对象中的默认数据格式,指定选定数据的数据格式(文本),然后使用SetData方法将数据放入DataObject对象中。
位律师回复
0条评论