VBA学习笔记(8)

2020-04-16 09:53

如果一个控件(例如文本框)不支持 Click 事件,则忽略上述事件序列中的 Click 事件。

如果双击时 Cancel 的返回值为 True,则控件将忽略第二次单击。如果第二次单击与第一次单击的作用相反,这是非常有用的,比如双击一个切换按钮。Cancel 参数允许窗体忽略第二次单击,因此无论是单击还是双击按钮都有同样的作用。

3、DblClick 事件、CanPaste 属性、Paset 和 Copy 方法示例 下例使用 CanPaste 属性和 Past 方法,将组合框从剪贴板粘贴到多页控件的一页中。该示例还使用 SetFocus 和 Copy 方法把控件从窗体复制到剪贴板。

用户单击 CommandButton1 可把组合框复制到剪贴板。用户双击(使用 DblClick 事件)CommandButton1 可把组合框粘贴到多页控件上。

若要使用该示例,请将示例代码复制到某窗体的声明变量部分。确保该窗体包含:

?

名为 TextBox1 的文本框。 名为 ComboBox1 的组合框。 名为 MultiPage1 的多页控件。 名为 CommandButton1 的命令按钮。

28

?

?

?

注意 该示例还包括一个子程序,用以说明把文本粘贴到控件。 Private Sub UserForm_Initialize()

ComboBox1.AddItem \

CommandButton1.Caption = \ & \

CommandButton1.AutoSize = True End Sub

Private Sub MultiPage1_DblClick(ByVal Index As Long, _ ByVal Cancel As MSForms.ReturnBoolean) If MultiPage1.Pages(MultiPage1.Value).CanPaste = _ True Then

MultiPage1.Pages(MultiPage1.Value).Paste Else

TextBox1.Text = \ End If End Sub

Private Sub CommandButton1_Click() UserForm1.ComboBox1.SetFocus

29

UserForm1.Copy End Sub

'将文本粘贴到控件的代码

'Private Sub ComboBox1_DblClick(ByVal Cancel As _ MSForms.ReturnBoolean)

' If ComboBox1.CanPaste = True Then ' ComboBox1.Paste ' Else

' TextBox1.Text = \' End If 'End Sub

十七、BeforeDragOver 事件

当拖放操作正在进行时该事件发生。 语法

30

对于框架 Private Sub object_BeforeDragOver( ByVal Cancel As MSForms.ReturnBoolean, ctrl As Control, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

对于多页

Private Sub object_BeforeDragOver( index As Long, ByVal Cancel As

MSForms.ReturnBoolean, ctrl As Control, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

对于 TabStrip

Private Sub object_BeforeDragOver( index As Long, ByVal Cancel As

MSForms.ReturnBoolean, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

对于其他控件

Private Sub object_BeforeDragOver( ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

BeforeDragOver 事件的语法包含以下成分:

成分 object index Cancel

必需。一个有效的对象名。

必需。受拖放操作影响的多页控件中页面的索引。

必需。事件状态。False 表示由控件处理该事件(这是默认方式);True 表示由应用程序处理该事件。 必需。拖动正在经过的控件。

必需。在拖放操作中被拖动的数据。该数据被打包在 DataObject 中。 必需。控件位置的横坐标和纵坐标。这两个坐标都以磅为单位。X 从该控件的左边开始测量;Y 从该控件的顶部开始测量。 必需。被拖动数据的转移状态。 必需。放置源所支持的操作。

必需。指定 Shift、Ctrl 和 Alt 的状态。

说明

ctrl Data X, Y

DragState Effect Shift

31

设置

DragState 的设置如下:

常量

fmDragStateEnter fmDragStateLeave fmDragStateOver

0 1 2

说明

鼠标指针在目标范围之内。 鼠标指针在目标范围之外。

鼠标指针在一个新的位置,但仍在同一目标范围内。

Effect 的设置如下:

常量

fmDropEffectNone fmDropEffectCopy fmDropEffectMove fmDropEffectCopyOrMove

0 1 2 3 值

说明

不将放置源复制或移动到放置目标。 将放置源复制到放置目标。 将放置源移动到放置目标。 将放置源复制或移动到放置目标。

Shift 的设置如下:

常量 fmShiftMask 1 fmCtrlMask 2 fmAltMask

4 值

按下 Shift。 按下 Ctrl。 按下 Alt。

说明

说明

当鼠标指针直接进入、离开或停留在一个有效的目标上时,用该事件监视鼠标指针。执行拖放操作过程中,当用户移动鼠标、按下或释放鼠标键(单个或多个键)时,系统初始化该事件。鼠标指针的位置决定了接收这一事件的目标对象。可以通过检查 DragState 参数来确定鼠标指针的状态。

当一个控件处理该事件时,可用 Effect 参数标识要执行的拖放动作。当 Effect 设置为 fmDropEffectCopyOrMove 时,放置源支持复制 (fmDropEffectCopy)、移动 (fmDropEffectMove) 或取消 (fmDropEffectNone) 操作。

32


VBA学习笔记(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:实用MAPGIS操作手册2

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: