二级VB辅导:启动OLE拖动操作

文章作者 100test 发表时间 2007:09:06 11:59:33
来源 100Test.Com百考试题网


  如果想要指定所支持的是哪种数据格式或拖放效果(复制、移动或不放),或者,如果想从中拖出数据来的控件不支持自动拖动,则需使用手工的 OLE 拖动操作。

  手工拖放操作的第一阶段是调用 OLEDrag 方法,设置允许的拖放效果,指定支持的数据格式,以及有选择地将数据放到 DataObject 对象中。
  使用 OLEDrag 方法手工启动拖动操作,并使用 OLEStartDrag 事件指定允许的拖放操作效果及所支持的数据格式。

  OLEDrag 方法
  一般来说,在选定数据后,按住鼠标左按钮并移动鼠标时,从对象的 MouseMove 事件调用 OLEDrag 方法。

  OLEDrag 方法未提供任何参数。其主要目的是启动手工拖动,然后允许 OLEStartDrag 事件设置拖动操作的条件(例如,指定在将数据拖动到另一个控件时发生的事情)。

  如果源控件支持 OLEDragMode 属性,则为了手工控制拖动操作,必须将此属性设置为“手工”并在控件处使用 OLEDrag 方法。如果控件支持手工 OLE 拖动而不支持自动 OLE 拖动,则其不具有 OLEDragMode 属性,但支持 OLEDrag 方法和 OLE 拖放事件。

  注意 如果将源控件 OLEDragMode 属性设置为“自动化”,则 OLEDrag 方法仍有效。

  指定拖放效果和数据格式
  在手工 OLE 拖动操作中,当用户开始拖动源并调用 OLEDrag 方法时,控件的 OLEStartDrag 事件将会发生。用此事件指定拖放效果和源所支持的数据格式。

  OLEStartDrag 事件用两个参数指定支持的数据格式,和放下数据时指定是复制数据还是移动数据(放下效果)。

  注意 若未在 OLEStartDrag 事件中指定放下效果和数据格式,则将不启动手工拖动。

  AllowedEffects 参数
  allowedeffects 参数指定拖动源所支持的拖放效果。例如:
  Private Sub txtSource_OLEStartDrag(Data As _ VB.DataObject, AllowedEffects As Long) AllowedEffects =   vbDropEffectMove Or _ vbDropEffectCopyEnd Sub

  然后,目标可向拖动源查询此信息并作相应的响应。

  allowedeffects 参数使用下述数值指定放下效果:
  常数值描述
  VbDropEffectNone0放下目标无法接受数据。
  VbDropEffectCopy1放下的结果为复制。拖动源未改变原始数据。
  VbDropEffectMove2拖动源删除了数据。

  Format 参数
  可通过设置 OLEStartDrag 事件的format 参数指定对象支持的数据格式。为此应使用 SetData 方法。例如,用丰富文本框控件作源,并用文本框控件作目标,就可指定下述支持格式:
  Private Sub rtbSource_OLEStartDrag(Data As _ VB.DataObject, AllowedEffects As Long) AllowedEffects =  vbDropEffectMove Or _ vbDropEffectCopy Data.SetData , vbCFText Data.SetData , vbCFRTFEnd Sub

  目标可查询源,从而可判断支持何种数据格式并作出相应的响应─ 举例来说,若目标不支持所放下数据的格式,它就会拒绝放下的数据。在这种情况下,只有源所支持的数据格式才是文本格式与丰富文本格式。

  详细信息 关于 SetData 方法的格式值的详细信息,请参阅“OLE 拖放 DataObject 对象”。

  将数据放到 DataObject 对象中

  在多数情况下,特别是在源支持两种以上的格式或花费大量时间创建数据时,可能会希望只在目标请求数据时再将数据放入 DataObject 对象。但是,可在开始拖动操作时使用 OLEStartDrag 事件中的 SetData 方法将数据放入 DataObject 对象。例如:

  Private Sub txtSource_OLEStartDrag(Data As _ VB.DataObject, AllowedEffects As Long) Data.Clear Data.SetData  txtSource.SelText, vbCFTextEnd Sub

  此例用 Clear 方法清除 DataObject 对象中的缺省数据格式,并指定所选定数据的数据格式(文本),然后又用 SetData 方法将数据放入   DataObject 对象。


相关文章


二级VB辅导:用VB实现“一点即填”
VB动态调用自己的ActiveXDLL
使用.NETFramework从VB6中访问事件日志
VB求数据表记录总数的最佳方法
二级VB辅导:启动OLE拖动操作
如何在VisualBasic中使用导入API
在VB中使用水晶报表的一种简易编程方法
VB中访问API函数之防错技巧
让VB自动改变控件大小
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛