配色: 字号:
《Visual Basic程序设计教程(第3版)》第10章 菜单及对话框
2023-05-25 | 阅:  转:  |  分享 
  

 
第10章 菜单及对话框菜单设计键盘与鼠标事件对话框 通用/自定义本章主要内容退出 窗体和大多数控件都能响应
键盘和鼠标事件 10.1.1 键盘事件 有三种事件处理键盘操作 1. KeyPress事件 2. KeyDown
事件:用户按下键盘上某个键时触发此事件 3. KeyUp事件:用户按下键盘上某个键后释放时触发此事件 10.1 键盘与鼠标
事件 Click、DblClick、MouseMove、MouseDown和MouseUp事件 当移动鼠标时发生M
ouseMove事件 当按下鼠标任意键时发生MouseDown事件,放开鼠标键时发生MouseUp事件
后三种事件可以区分鼠标的左、右、中键与Shift、Ctrl、Alt键 Private Sub 对象名_鼠标事件(
Button As Integer, Shift As Integer, X As Single
,Y As Single) 说明:(1) Button参数表示哪个鼠标键被按下或释放。用0,1,2位分别表示鼠标的左、右
、中键,用1或0表示被按下或释放 (2) Shift参数表示当鼠标键被按下或释放时,Shift、Ctrl、Alt键的按
下或释放状态。用0、1、2位表示Shift、Ctrl、Alt键 (3) X,Y表示鼠标指针的当前坐标位置 10.1.
2 鼠标事件MouseMove、MouseDown或MouseUp 当单击鼠标左键时把按钮的位置移动到鼠标指针的位置,单击
鼠标右键时把按钮的位置移动到窗体的左上角位置(即坐标原点)。以下程序将MouseDown事件与Move方法结合起来使用。 Pri
vate Sub Form_MouseDown(Button As Integer, _ Shift As I
nteger, X As Single, Y As Single) If Button = 1 Then
''单击鼠标左键时 Command1.Move X, Y ''移动到鼠标指针的位置
Else Command1.Move 0, 0 ''移动到窗体的左上角 End If
End Sub 例10.1移动命令按钮的位置例10.1 10.1.3 拖放操作 “拖放”(DragDrop)就是使
用鼠标将对象从一个地方拖动到另一个地方再放下 控件拖放是指运行时将控件拖放到新的位置 它可以分解为两种操作:一个是发生在
源对象的“拖”操作,另一个是发生在目标对象上的“放”操作 1. 属性 (1)DragMode属性:用于设置拖
放方式 1为自动方式;0 (默认)为手动方式,通过代码来设定拖放操作何时开始和结束 (2)DragI
con属性:设置拖放操作时显示的图标,默认情况下是将源对象的灰色轮廓作为拖动图标 2. 事件 (1)Dr
agDrop事件:当一个完整的拖放动作完成时触发。它可用来控制在拖放操作完成时要进行的处理。其事件过程格式: Priva
te Sub 对象名_DragDrop(Source As Control,X As Single, Y As Single)
Source表示正在被拖动的对象,X、Y表示鼠标指针在目标对象中的坐标。 (2)DragOver事件:
当源对象被拖动到目标对象上,在目标对象上就会触发DragOver事件。本事件先于DragDrop事件。其事件过程格式:
Private Sub 对象名_DragOver(Source As Control, X As Single,
_ Y As Single, State As Int
eger) State参数:0 表示进入,即源对象正进入目标对象内;
1 表示离开,即源对象正在离开目标对象; 2 表示跨越,即源对象在目标范围内移
动位置 3. 方法 常用的有Drag方法。Drag方法的语法格式:
对象名.Drag [动作] “动作”取值为0时,表示取消拖动操作;取值为1时,启动拖动操作;取值为
2时,结束拖动操作 例10.2 采用自动方式,实现文本框的拖动操作 在窗体上建立一个
文本框Text1, 其DragMode属性值设置为1(自动方式) ,程序代码: Private Sub Form_Dr
agDrop(Source As Control, X As Single,Y As Single)
Source.Move X,Y ′移动对象位置
End Sub 在窗体上建立一个文本框Text1, 其DragMode属性值设置为0(手动方式) ,
程序代码: Private Sub Form_DragDrop(Source As Control, X As Singl
e, Y As Single) Source.Move X,Y
′移动对象位置 End Sub Private Su
b Text1_MouseDown(Button As Integer, Shift As Integer,

X As Single, Y As Single) Text1.Drag 1
′启动“拖动”
操作 End Sub Private Sub Text1_MouseUp(Button As Integer, S
hift As Integer,
X As Single, Y As Single)
Text1.Drag 2
′结束“拖动”操作 End Sub例10.3 采用手动方式,实现文本框的拖动操作例1
0.3 (1)在窗体上建立一个图片框(Picture1)和一个文本框(Text1),文本框的Text属性为空
(2)编写程序代码 程序运行后,用户在文本框内输入文本和用鼠标选定(通过拖动)文本
,然后按住鼠标左键后把文本框拖放到图片框内,即可把已选定的文本显示在图片框内例10.4 把文本框中的选定文本,拖放到图片框
内显示出来例10.4Private Sub Form_Load() Text1.Dr
agMode = 0 ′置手动方式End SubPrivate Su
b Picture1_DragDrop(Source As Control, X As Single, Y As Single)
Picture1.CurrentX = X ′以鼠标位置为当前显示起始位置
Picture1.CurrentY = Y Picture1.Print Text1.S
elText ′在图片框中显示文本框中的选定内容 End Sub Private Sub Text1_MouseMove(B
utton As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then ′Button为1时,
表示按下左键 Text1.DragMode = 1 ′置自动
方式 End IfEnd Sub程序代码 10.2 菜单设计 应用程序通过菜单为用户提供一组
命令 菜单一般分为两种:下拉式菜单和弹出式菜单 10.2.1 下拉式菜单 1.下拉式菜单的
结构 下拉式菜单基本结构包括:顶层菜单、菜单项和子菜单例10.1c 10.2.2 菜单编辑器
设计菜单的工具——菜单编辑器 菜单编辑器分为上、下两部分,上半部分用来设置属性,下半部分是菜单显示区,用来显示用
户输入的菜单内容。 10.2.3 菜单的Click事件 除分隔线以外的所有菜单元素都能识别Click事件例10.5
编一程序,进行两个操作数的算术运算练习 设计步骤如下: (1)创建应用程序的用户界面和
设置对象属性 菜单栏向用户提供功能选择,包括运算数的位数,运算符类型(加、减、乘)和退出程序 菜单设计
各个菜单项名称例10.5 (2)编写程序代码 Option Explicit
‘规定所有变量都要显式声明,见10.9.1节 Dim sel1 As Integer, sel2 As String
Dim r1 As Long Private Sub Form_Load() sel1 =
0 ''位数标记
sel2 = "" ''运算标记
Randomize End Sub Private Sub Mnu11_Click()
‘单击“一位数”菜单项 sel1 = 1
''设置位数标记 End Sub Private Sub
Mnu12_Click() ‘单击“二位数”菜单项 sel1 = 10
End SubPrivate Sub Mnu13_Click() ‘单击“三位数”菜单
项 sel1 = 100End SubPrivate Sub Mnu21_Click()
‘单击“加法”菜单项 sel2 = "+"
''设置运算标记End SubPrivate Sub Mnu22_Click() ‘单击“减法”
菜单项 sel2 = "-"End SubPrivate Sub Mnu23_Click()
‘单击“乘法”菜单项 sel2 = ""End Sub Private Sub Command1_Click
() ''"命题" Dim a As Long, b As Lo
ng If sel1 = 0 Or sel2 = "" Then MsgBox "先选择运算数的
位数和运算类型" Exit Sub End If
a = sel1 + Int(9 sel1
Rnd) ‘根据指定位数,随机生成操作数 b = sel1 + Int(9
sel1 Rnd) Text1.Text = Str(a) + sel2 + Str(b) + “=” ‘根据
操作数及运算类型组成算式 Select Case sel2
‘根据运算类型,求运算结果r1 Case "+" r1
= a + b Case "-" r1 = a - b Case
"" r1 = a b End Select Text2.Text = ""
Text2.SetFocusEnd Sub菜单操作后Sel1 指定位数 = 1 一位数
= 10 二位数 = 100 三位数Sel2 指定运算类型 = “+”
加法 = “-” 减法 = “” 乘法Private Sub
Command2_Click() ''"答题"按钮单击事件 Dim r2 As Long
If Text2.Text = "" Then MsgBox "请输入答案"
Exit Sub End If r2 = Val(Text2.Text)
''读取用户的答案 If r1 = r2 Then
''判断答案 MsgBox "正确" Else
MsgBox "错误" End IfEnd SubPrivate Sub Mnu30_Click()
‘“退出”菜单命令 EndEnd Sub 10.2.5 弹出式菜单
 弹出式菜单又称为快捷菜单。可以根据右击鼠标时的位置弹出不同的菜单。 使用VB提供的菜
单编辑器,把某个菜单设置成隐藏。 创建快捷菜单的步骤如下: (1)使用菜单编辑器设计菜单
 (2)设置顶层菜单项为不可见,即不选中菜单编辑器里的“可见”选项或在属性窗口中设定Visible属性为Fal
se (3)编写与弹出式菜单相关联的MouseUp(释放鼠标)事件过程。格式为: [对象] P
opupMenu 菜单名 [, 位置常数][, 横坐标[, 纵坐标]]]例10.6 在例10.5的基础上,把“位数”菜单改为快捷
菜单 (1)打开例10.5的应用程序,选定窗体,然后在菜单编辑器中将“位数”菜单标题的“可见”框中的“√”取消(即不选中)
  (2)增加以下的MouseUp事件过程代码:   Private Sub Form_MouseUp(Button
As Integer, _         Shift As Integer, X As Single, Y As Single)
     If Button = 2 Then ‘检查是否右击,击左键为1      
 PopupMenu mnu10     End If   End Sub  程序运行时,右击窗体空白处,即会弹出快捷
菜单,如图10.5所示例10.6例10.5A10.3 对话框 对话框(DialogBox)是应用程序与用户进行交互的主要途径。 三种对话框: (1)预定义对话框 使用函数InputBox和MsgBox来实现。 (2)通用对话框 通用对话框是一种ActiveX控件,在使用之前,应选择“工程”菜单中的“部件”命令先将其添加到工具箱中 (选中“Microsoft Common Dialog Control 6.0” ) 利用通用对话框能够创建下列六种标准对话框(指定相应的参数,P233): 打开(Open),另存为(Save As),颜色(Color) 字体(Font),打印机(Printer),帮助(Help) (3)用户自定义对话框 建立一个窗体,把窗体设置成对话框特性(没有控制菜单框、最大化及最小化按钮,不能改变其大小,见表10.1) 在窗体上根据需要放置控件
献花(0)
+1
(本文系大高老师原创)