第 5章 界面设计
学习目标:
? 掌握窗体设计
? 掌握标准控件的应用
? 掌握多重窗体的设计与应用
? 掌握响应鼠标与键盘事件
? 掌握 菜单的设计与应用
第 5章 界面设计
教学内容:
5.1 窗体与控件应用基础
5.2 常用标准控件及应用案例
5.3 多窗体程序的设计与应用
5.4 VB工程管理
5.5 鼠标与键盘事件
5.6 菜单的设计与应用
5.1 应用基础 - 控件的基本操作
1,在窗体上添加控件
? 单击工具箱中的图标, 在窗体上拖放出所需控件
? 双击工具箱中的图标 (窗体中央出现一个缺省大小的控
件 ),根据需要移动控件或更改控件的大小 。
2,选中窗体上的控件
? 选中一个控件:单击
? 选中多个控件:
?Ctrl或 Shift+单击
?用鼠标拖放出一个矩形框
返回目录
5.1 应用基础 - 控件的基本操作
3,改变控件大小
? 拖动 选中控件四周的 8个控制点
? 修改 Width和 Height的属性 值
4,删除, 移动控件
? 删除:选中后按 Delete键
? 移动:
?拖动选中的控件
?修改 Top和 Left的属性值
返回目录
5.1 应用基础 - 控件的基本操作
5,复制控件
选中控件 →, 复制, →, 粘贴,
返回目录
根据需要选择
? 控件数组由一组相同类型的控件组成,名称 (Name
属性 )、属性和事件过程都相同。
? 通过 Index 属性可区分控件数组中的元素。
? 如果要从控件数组中撤消一个控件,需改变该控
件的 Name属性设置,并删除 Index属性设置。
5.1 应用基础 - 窗体和控件的常用属性
返回目录
属 性 说 明
Name 名称
Caption 标题
Font 字体
Enabled 有效
Visible 可见
BackColor,ForeColor 背景色, 前景色
BorderColor,FillColor 边框色, 填充色
5.1 应用基础 - 窗体的属性、事件与方法
1,窗体的属性
除 Name,Caption,Font,Enabled,Visible,BackColor、
ForeColor,FillColor属性, 常用属性还有:
? Appearance:设置窗体运行时是否以 3D效果显示
? BorderStyle,设置窗体的边框样式
? ControlBox,设置窗口是否显示控制菜单按钮
? Icon:设置 窗体最小化时显示的图标
? Height/Width:决定窗体的初始大小
? Left/Top:根据屏幕的左上角确定窗体的位置
? MaxButton/MinButton:是否具有, 最大化, /“最小化, 按
钮
? ShowInTaskbar:窗体运行时是否出现在任务栏中返回目录
5.1 应用基础 - 窗体的属性、事件与方法
2,窗体的常用事件
?Load/Unload:装入 /卸载
?Click:单击
?Activate/Deactivate:激活 /非激活
?Resize:尺寸改变
?Initialize:初始化 (在 Load事件后发生 )
?KeyPress:按键
? MouseDown/MouseUp/MouseOver:鼠标按下 /移动 /松开
返回目录
例如, 当 A窗体变
成活动窗体时, A窗
体发生 Activate事件;
当另一个窗体被激活
时, A 窗体发生
Deactivate事件 。
事件:能被对象识
别和响应的动作
5.1 应用基础 - 窗体的属性、事件与方法
3,窗体的常用方法
方法:对象要完成的操作 (特殊子程序 )
调用格式,[对象名称 ].<方法名称 >
? Print:打印文本
? Show:显示窗体
? Hide:隐藏窗体 (不是卸载 )
? Cls:清除运行时窗体中生成的图形和文本
返回目录
5.2 常用标准控件 - 1
标准控件由系统提供, 又称为内部控件 。
1,命令按钮 -1
? Caption属性:设置显示在按钮上的文本 (标题 )
返回目录
快捷键作用:
Alt+S =单击“开始”按
钮
Alt+X =单击,Exit”按
钮
5.2 常用标准控件 - 1
1,命令按钮 -2
? Default属性,设置缺省的 命令 按钮 。 若设置为 True,
按回车键相当于单击该按钮 。
? Cancel属性, 设置缺省的 取消 按钮 。 若设置为 True,
按 Esc键相当于单击该按钮 。
? Index属性,设置按钮在控件数组中的编号 。
命令按钮的默认事件是 Click(单击 ),不支持双击事件 。
返回目录
5.2 常用标准控件 - 1
2,标签
? Caption属性,设置在标签控件中显示的文本
? Alignment属性,设置标签中文本的对齐方式
( 0-左对齐, 1-右对齐, 2-居中 )
? BackStyle属性:设置标签控件背景是否透明
( 0-透明, 1-不透明 )
返回目录
例, 标签, 用户名
称, 和, 密码, 是透明
的
标签控件主要用来显示说明文字,因此
一般不对其进事件处理。
5.2 常用标准控件 - 1
3,文本框 -常用属性
? Text:设置文本框中显示的内容
? MultiLines:设置是否能输入或显示多行文本
取值 True或 False (缺省值 )
? ScrollBars,设置多行文本框中是否出现滚动条
( 0-没有, 1-水平, 2-垂直, 3-水平和垂直 )
? Locked:设置是否允许用户编辑文本框中的文本
取值 True或 False (缺省值 )
? Passwordchar,设置密码字符
若 MultiLine属性为 True,则 PasswordChar属性无效
返回目录
5.2 常用标准控件 - 1
3,文本框 -常用事件
? Change(默认事件 ):改变文本框内容时发生
? KeyPress:在文本框中按键盘上的键时发生
? Lostfocus:文本框失去焦点时发生
? Gotfocus:文本框获得焦点时发生
焦点是接收用户鼠标或键盘输入的能力 。
4,框架
? 可用于对其他控件进行分组
? 常用属性是 Caption,用于设置框架的标题文本
? 可先画出框架, 再将其它控件画到框架中;或者, 剪
切, 框架外的控件,, 粘贴, 到框架中
返回目录
5.2 常用标准控件 - 1
[例 5.1] 彩票开奖器
Private Sub Command1_Click(Index As Integer)
Command1(Index).Enabled = False '使点击过的按钮不可用
Randomize (Time)
Label1(Index).Caption = Int(Rnd * 10) '对应标签显示随机数
Label1(Index).FontSize = "24"
Label1(Index).ForeColor = RGB(255,0,0)
End Sub
返回目录
Command1
控件数组
5.2 常用标准控件 - 1
[例 5.1] 彩票开奖器
Private Sub Cmd_Redo_Click() '点击 ReDo按钮
For i = 0 To 3
Command1(i).Enabled = True
Label1(i).Caption = ""
Next i
End Sub
Private Sub Cmd_Exit_Click() '点击 Exit按钮
End
End Sub
返回目录
5.2 常用标准控件 - 1
[例 5.2] 同步显示
Private Sub Text1_Change()
Text2.Text = Text1.Text
End Sub
Private Sub Command1_Click() '重新输入
Text1.Text = ""
Text1.SetFocus
End Sub
返回目录
两个文本框:
MultiLine设为 True
ScrollBars设为 2
5.2 常用标准控件 - 1
[例 5.3] 考生登录
If Len(Txtcode.Text) < 8 Then
Lblsm.Caption = "准考证号必须输入,长度 8位 ! "
Txtcode.SetFocus
ElseIf Len(Txtname.Text) = 0 Then
Lblsm.Caption = "考生姓名必须输入 "
Txtname.SetFocus, Exit Sub
ElseIf Len(TxtSeat.Text) = 0 Then
Lblsm.Caption = "座位号必须输入 "
TxtSeat.SetFocus, Exit Sub
End If
Lblsm.Caption = "", MsgBox "正确 " 返回目录
“正确无误, 按
钮的 Click事件响
应代码:各项信
息均正确输入后
弹出一信息框 。
5.2 常用标准控件 - 1
[例 5.3] 考生登录
Private Sub Txtcode_LostFocus()
If Len(Txtcode.Text) < 8 Then
Lblsm.Caption = "准考证号必须输入,长度 8位 ! "
Txtcode.SetFocus
ElseIf Not IsNumeric(Txtcode.Text) Then
Lblsm.Caption = "准考证号必须是数字 ! "
Txtcode.SetFocus
Else
Lblsm.Caption = ""
End If
End Sub 返回目录
“准考证号, 文
本框失去焦点时
的事件响应代码:
检查是否输入 8位
数字 。
IsNumeric()是
判断数字函数
5.2 常用标准控件 - 1
[例 5.3] 考生登录
Private Sub Txtname_LostFocus()
If Len(Txtcode.Text) < 8 Or Not IsNumeric(Txtcode.Text) Then
Txtcode.SetFocus
ElseIf Len(Txtname.Text) = 0 Then
Lblsm.Caption = "考生姓名必须输入 ! "
Txtname.SetFocus
Else
Lblsm.Caption = ""
End If
End Sub
返回目录
“姓名, 文本
框失去焦点时
的事件响应代
码:检查姓名
是否输入 。
5.2 常用标准控件 - 1
[例 5.3] 考生登录
Private Sub TxtSeat_LostFocus()
If Len(Txtname.Text) = 0 Then
Txtname.SetFocus
ElseIf Len(TxtSeat.Text) = 0 Then
Lblsm.Caption = "座位号必须输入 ! "
TxtSeat.SetFocus
ElseIf Not IsNumeric(TxtSeat.Text) Then
Lblsm.Caption = "座位号必须是数字 "
TxtSeat.SetFocus
Else
Lblsm.Caption = ""
End If
End Sub 返回目录
“座位号, 文
本框失去焦点
时的事件响应
代码:检查座
位号是否输入,
是否是数字 。
5.2 常用标准控件 - 2
1,单选按钮
? 常用属性是 Caption和 Value。
? Value属性表示控件的状态, 缺省值为 False(未被选中 )。
? 常用事件是 Click
? 缺省时, 直接放到窗体上的所有单选按钮自动构成一组 。
2,复选框
? 常用属性是 Caption和 Value。
? Value属性表示控件的状态,0 - 未被选中 (缺省值 ),
1 - 选定 2 – 灰色
? 复选框的主要事件也是 Click
返回目录
5.2 常用标准控件 - 2
3,滚动条 和
? Value属性,滚动框在滚动条中的当前位置
? Max和 Min属性,Value的最大值和最小值 。
Max的缺省值为 32767,Min的缺省值为 0
? LargeChange和 SmallChange:
滚动条的主要事件是:
? Change:滚动框的位置改变时发生
? Scroll:在拖动滚动条上的滚动框时发生
返回目录
LargeChange 单击此
处时 Value的变化值 SmallChange 单击此处时 Value的变化值
5.2 常用标准控件 - 2
4,定时器
定时器是应用程序中控制定时发生事件的控件 。
常用属性:
? Enabled:设置定时器是否可用, 缺省为 True
? Interval:设置定时器事件之间所间隔的毫秒数,
缺省值为 0(Timer控件无效 ),最大为 65535
事件:
Timer,以 Interval属性指定的时间间隔发生
(Enabled属性设置为 True)
注:定时器控件只在设计时出现在窗体上
返回目录
5.2 常用标准控件 - 2
[例 5.4] 简易计算器
Private Sub Command1_Click() '计算
a = Val(Text1.Text),b = Val(Text2.Text)
If Option1 Then Text3.Text = a + b
If Option2 Then Text3.Text = a - b
If Option3 Then Text3.Text = a * b
If Option4 Then Text3.Text = a / b '思考,b=0怎么办?
End Sub
Private Sub Command2_Click() '清除
Text1.Text = "", Text2.Text = "", Text3.Text = ""
End Sub
返回目录
5.2 常用标准控件 - 2
[例 5.4] 简易计算器
返回目录
Private Sub Check1_Click()
If Check1.Value = 1 Then
Text3.FontItalic = True
Else
Text3.FontItalic = False
End If
End Sub
Private Sub Check2_Click()
If Check2.Value = 1 Then
Text3.FontBold = True
Else
Text3.FontBold = False
End If
End Sub
设置是否斜体显示 设置是否粗体显示
5.2 常用标准控件 - 2
[例 5.5] 求阶乘
返回目录
对 象
定时器
(Timer1)
水平滚动条
(HScroll1)
属性 属性值
Enabled False
Interval 500
Max 20
Min 1
LargeChange 1
SmallChange 1
Value 1
5.2 常用标准控件 - 2
[例 5.5] 求阶乘
Private Sub Timer1_Timer()
n = HScroll1.Value, nj = 1
For i = 1 To n '该循环计算 n!
nj = nj * i
Next
Cls, Form1.FontSize = 18
Label1.Caption = Str(n) + "!=", Label2.Caption = nj
If HScroll1.Value < 20 Then
HScroll1.Value = HScroll1.Value + 1
Else
HScroll1.Value = 1
End If
End Sub
返回目录
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub
Private Sub Command2_Click()
Timer1.Enabled = False
End Sub
5.2 常用标准控件 - 3
1,列表框
? 常用特定属性
? List,项目数组
引用形式,列表框名称,List(index)
第 1项的 index为 0,最后一项的 index为 ListCount-1
? ListCount,项目个数
? ListIndex,当前所选项目的索引号
第 1项为 0,最后一项为 ListCount-1
? Sorted,是否按字母顺序排序 (默认 false)
? 常用事件,Click,DblClick
返回目录
5.2 常用标准控件 - 3
1,列表框
? 常用方法
? AddItem:将项目添加到列表框。
列表框名称,AddItem item[,index]
item:项目的字符串表达式
index:插入新项目的位置
? RemoveItem,从列表框中删除项目
列表框名称,RemoveItem index
index:指定删除的项目位置序号
? Clear,删除列表框中的所有项目
列表框名称,Clear
返回目录
5.2 常用标准控件 - 3
2,组合框
? 组合框= 文本框+列表框
? 常用属性, 事件和方法与列表框相同
? 设置 Style属性,可决定组合框的样式 (三种 ):
? 0,下拉式组合框 (缺省值 )
含文本框和下拉式列表
? 1,简单组合框
含 文本框和不能下拉的列表
界面设计时须将控件绘制得大一些 )
? 2, 下拉式列表框
仅允许从下拉式列表中选择项目 返回目录
5.2 常用标准控件 - 3
[例 5.6] 对列表框中的项目进行添加, 删除和统计
设计界面:
?姓名文本框,TextXM
?显示当前人数的标签,Label2
?“添加, 按钮,CommandAdd
Default属性为 True
?“删除, 按钮,CommandDelete
Enabled属性为 False
?列表框,List1
返回目录
5.2 常用标准控件 - 3
[例 5.6] 对列表框中的项目进行添加, 删除和统计
Private Sub CommandAdd_Click() '单击, 添加, 按钮
If TextXM.Text <> "" Then
List1.AddItem TextXM.Text
Label2.Caption = List1.ListCount '显示当前人数
TextXM.Text = ""
End If
TextXM.SetFocus
End Sub
返回目录
5.2 常用标准控件 - 3
[例 5.6] 对列表框中的项目进行添加, 删除和统计
Private Sub List1_Click() '单击列表框中的项目
CommandDelete.Enabled = True '使, 删除, 按钮可用
End Sub
Private Sub CommandDelete_Click() '单击, 删除, 按钮
I = List1.ListIndex '获得当前所选项目的索引号
List1.RemoveItem I
Label2.Caption = List1.ListCount
CommandDelete.Enabled = False
End Sub
返回目录
5.2 常用标准控件 - 3
[例 5.7] 显示, 新增, 删除, 清空学生记录
设计界面:
?学号文本框,Txt_id
?姓名文本框,Txt_xm
?班级文本框,Txt_bj
?学生记录列表框,Lst_data
?“新增, 按钮,Cmd_add
Default属性为 True
?“删除, 按钮,Cmd_dele
?“清空, 按钮,Cmd_clear
返回目录
5.2 常用标准控件 - 3
[例 5.7] 显示, 新增, 删除, 清空学生记录
',通用, 段声明自定义数据类型及模块级变量
Private Type student
id As String * 6
xm As String
bj As String
End Type
Dim stud(50) As student
Dim num As Integer
Private Sub Form_Load()
num = 0 '统计记录数
Cmd_dele.Enabled = False
End Sub
返回目录
5.2 常用标准控件 - 3
[例 5.7] 显示, 新增, 删除, 清空学生记录
Private Sub Cmd_add_Click() '单击, 新增, 按钮
Lst_data.AddItem Txt_id + Space(5) + Txt_xm + Space(5) + Txt_bj
num = num + 1
'定义类型的变量, 通过 "变量名,成员名 "访问变量中的成员
With stud(num)
.id = Txt_id.Text
.xm = Txt_xm.Text
.bj = Txt_bj.Text
End With
If num = 1 Then Cmd_dele.Enabled = True
Txt_id.SetFocus
Txt_id = "", Txt_xm = "", Txt_bj = ""
End Sub
返回目录
5.2 常用标准控件 - 3
[例 5.7] 显示, 新增, 删除, 清空学生记录
Private Sub Cmd_dele_Click() '单击, 删除, 按钮
Dim n As Integer
Lst_data.RemoveItem Lst_data.ListIndex
For n = Lst_data.ListIndex + 1 To num - 1 '移位覆盖
stud(n).id = stud(n + 1).id
stud(n).xm = stud(n + 1).xm
stud(n).bj = stud(n + 1).bj
Next
num = num - 1 '记录总数 -1
If num = 0 Then Cmd_dele.Enabled = False
Txt_id = "", Txt_xm = "", Txt_bj = ""
End Sub
返回目录
5.2 常用标准控件 - 3
[例 5.7] 显示, 新增, 删除, 清空学生记录
Private Sub Cmd_clear_Click() '单击, 清空, 按钮
Txt_id = "", Txt_xm = "", Txt_bj = ""
Txt_id.SetFocus
End Sub
Private Sub Lst_data_Click() '单击列表框项目
Dim n As Integer
n = Lst_data.ListIndex
With stud(n + 1)
Txt_id.Text =,id
Txt_xm.Text =,xm
Txt_bj.Text =,bj
End With
End Sub
返回目录
5.2 常用标准控件 - 4
1,图片框和图像框
(1) 图片框 (PictureBox)和图像控件 (Image)的异同
? 都能用来显示图形或图片:位图 (.bmp),图标 (.ico)、
图元 (.wmf),JPEG或 GIF等
?主要区别:
– 图片框中可以包含其它控件, 而图像框不能 。
– 图片框可支持各种图形方法和打印方法, 而图像框不能 。
– 图像框比图片框占用的内存少, 显示速度快 。
返回目录
5.2 常用标准控件 - 4
(2) 将图片加载到窗体、图片框或图像框中
? 窗体设计时
设置 Picture属性 或,复制” /“剪切”图像 →,粘贴”
如果要取消图片,将 Picture属性重新设置为 (None)
? 程序代码中
?用 LoadPicture函数,例如:
Form1.Picture = LoadPicture("C:\windows\backgrnd.gif")
Form1.Picture = LoadPicture( ) '清除图片
?复制其它对象的图片,例如:
Picture1.Picture = Image1.Picture
返回目录
5.2 常用标准控件 - 4
(3) 调整图片大小
? 图片框,AutoSize属性设置控件是否按装入的图片大小自动
调整尺寸,缺省值 False。但图元文件 (.wmf)例外, AutoSize为
False时,装入的图形会自动调整大小以适应图片框。
? 图像框,Stretch属性为 False(缺省值 ),控件自动调整大小以
适应装载的图形的尺寸; Stretch属性为 True,则加载的图形自
动调整大小以适应控件,即,调整图像框可实现图形的放大和
缩小 。
? 窗体:不随装载的图片大小而自动改变,图片大于窗体的部
分将被裁剪掉。
返回目录
5.2 常用标准控件 - 4
(4) 控件的边框样式
BordeStyle属性,0(无边框 ),1(有边框 )
? 图片框,BordeStyle属性缺省值为 1
? 图像框,BordeStyle属性缺省值为 0
返回目录
5.2 常用标准控件 - 4
[例 5.8] 图片框和图像框应用示例
Image1的属性设置:
? Stretch为 True
? BordeStyle为 1
? Height和 Width均为 1800
'在窗体的通用段声明模块变量:
Dim n As Integer 'n记录图片框中的输出项数
Private Sub Form_Load()
n = 0 'n赋初值
End Sub
返回目录
5.2 常用标准控件 - 4
'单击“放大”按钮
Private Sub Command1_Click()
Image1.Width = Image1.Width * 1.25
Image1.Height = Image1.Height * 1.25
Picture1.Print "放大图片 ", n = n + 1
If n = 10 Then Picture1.Cls,n = 0
End Sub
'单击“缩小”按钮
Private Sub Command2_Click()
Image1.Width = Image1.Width * 0.75
Image1.Height = Image1.Height * 0.75
Picture1.Print "缩小图片 ", n = n + 1
If n = 10 Then Picture1.Cls,n = 0
End Sub
返回目录
5.2 常用标准控件 - 4
Private Sub Command3_Click() '单击“还原”按钮
Picture1.Cls
Image1.Height = 1800
Image1.Width = 1800
End Sub
返回目录
5.2 常用标准控件 - 4
2,直线控件
?功能,在窗体, 框架或图片框中绘制线条
?移动和调整线条大小
设置 X1,X2,Y1,Y2属性
其中, X1,Y1-左端点坐标, X2,Y2-右端点坐标
?设置线条的颜色和样式
设置 BoderColor和 BordeStyle属性
注意:若 BorderStyle=0,BorderColor属性不起作用
?设置线条的宽度
设置 BorderWidth属性
返回目录
5.2 常用标准控件 - 4
3,形状控件
?功能,在窗体上绘制有规则的图形
? Shape属性设置控件的具体形状
返回目录
5.2 常用标准控件 - 5
执行, 工程 → 部件, 命令可添加其他外部控件
[例 5.9] DTPicker控件应用
(1) 添加 DTPicker控件:
返回目录
5.2 常用标准控件 - 5
[例 5.9] DTPicker控件应用
(2) 窗体设计:
(3),输出, 按钮的 Click事件过程:
Private Sub Command1_Click()
MsgBox "你的订票日期是 " & DTPicker1.Value,,"输出 "
End Sub
返回目录
5.3 多窗体程序的设计与应用
1,添加窗体
,工程 → 添加窗体,
2,显示或隐藏窗体
?显示指定窗体
Object.Show [Style]
Object-窗体名称
Style-显示模式 (0,1)
?隐藏指定窗体
Object.Hide
返回目录
5.3 多窗体程序的设计与应用
3,设置启动窗体
?默认第一个窗体 (Form1)为启动窗体
?改变启动窗体:, 工程 → 工程属性,
返回目录
5.3 多窗体程序的设计与应用
4,应用案例,设计试题库管理程序 ctk.vbp的初步框架
返回目录
点击后可打开相应的窗体
5.3 多窗体程序的设计与应用
(1) 创建用户登录窗体 Frmdl
① 新建工程:窗体保存为 Frmdl.frm,工程保存为 ctk.vbp。
② 窗体设计:
?下面 4个按钮为一控件数组 Cmdml(0)~ Cmdml(3)
?除, 退出, 按钮外, 其它三个按钮的 Enabled属性设为 False
?密码文本框 Txtcode的 PasswordChar属性设为, *”
?底部提示标签 Lblsm的 Caption属性设为空
返回目录
5.3 多窗体程序的设计与应用
③ 程序设计:
Dim cs As Integer 'cs记录出错次数
Private Sub Cmdml_Click(Index As Integer)
Select Case Index
Case 0,'单击 "题库管理 "按钮
Frmsele.Show 1
Case 1,'单击 "自动选题 "按钮
Frmxt.Show 1
Case 2,'单击 "制作考盘 "按钮
Frmcopy.Show 1
Case 3,'单击 "退出 "按钮
End
End Select
End Sub
返回目录
控件数组按钮的
Click事件响应代
码:点击后可打
开相应的窗体
5.3 多窗体程序的设计与应用
Private Sub Cmgqd_Click() '单击, 确定, 按钮
If cs < 3 Then
If UCase(TxtName.Text) <> "TEACHER" Then
Lblsm.Caption = "用户名错误, 请重新输入 ! "
cs = cs + 1,TxtName.SetFocus
ElseIf (Txtcode.Text) <> "kaoshi" Then
Lblsm.Caption = "密码错误, 请重新输入 ! "
cs = cs + 1, Txtcode.SetFocus
Else '用户名和密码均正确的情况
Lblsm.Caption = "", Cmdml(0).Enabled = True
Cmdml(1).Enabled = True, Cmdml(2).Enabled = True
End If
Else
Lblsm.Caption = "已连错三次, 请退出 ! ",Cmdml(3).SetFocus
End If
End Sub 返回目录
5.3 多窗体程序的设计与应用
(2) 添加题库管理窗体 Frmsele
①,工程 → 添加窗体,, 新建一个窗体, 保存为 Frmsele.frm。
② 在该窗体中添加一个命令按钮,
③ 编写 Click事件响应代码:
Private Sub Cmd_exit_Click()
Unload Me
End Sub
(3) 仿上, 添加窗体 Frmxz.frm
(4) 仿上, 添加窗体 Frmcopy.frm
返回目录
5.4 VB工程管理- 工程的组成
? VB工程包含多种类型的文件
? 其中最常用的文件是:
?工程文件
包含与该工程有关的全部文件, 对象以及所设置的环境选项的
信息 (见教材 图 5-30 ),扩展名,vbp
?窗体文件
包含窗体及其控件有关属性的文本描述, 常量或变量的声明,
以及窗体内的过程代码等 (见教材 图 5-31),扩展名为,frm
若窗体中对象的数据含有二进制属性, 保存该窗体时将自动生
成同名的二进制数据文件, 扩展名为,frx
?标准模块文件
通常用来定义供其他窗体或模块引用的全局常量, 变量, 过程
等, 扩展名为,bas 返回目录
5.4 VB工程管理- 工程的基本操作
1,新建, 打开和保存工程
新建工程
? 启动 VB时:, 新建工程, 对话框的, 新建, 选项卡
? VB窗口中:, 文件 → 新建工程,
打开工程
? 启动 VB时:, 现存,,, 新建,
? VB窗口中:, 文件 → 打开工程,
保存工程
? 单击, 保存工程, 按钮
?, 文件 → 保存工程,
?, 文件 → 工程另存为,
返回目录
5.4 VB工程管理- 工程的基本操作
2,工程中添加, 移除和保存文件
? 添加 指定类型的 文件:, 工程 → 添加 …”
? 删除选定的文件:, 工程 → 移除 …”
? 保存选定的文件,, 文件 → 保存 …”
? 另存选定的文件,, 文件 → … 另存为,
注:
? 上述操作可用快捷菜单中的相关命令
? 在当前工程中添加现存的文件时 (例如,添加其他工程中
的窗体 ),并不是添加该文件的副本,而只是简单地在工
程中包含对该文件的引用。
返回目录
5.5 鼠标与键盘事件- 鼠标事件
1,三个基本的鼠标事件
MouseDown,MouseUp,MouseMove
? MouseDown和 MouseUp
Private Sub 对象名称 _MouseDown(Button As Integer,
Shift As Integer,X As Single,Y As Single)
Private Sub 对象名称 _MouseUp(Button As Integer,Shift
As Integer,X As Single,Y As Single)
其中:
Button:返回一个整数 ( 1-左, 2-右, 4-中 )
Shift:返回一个整数 (见教材表 5.4 )
代表 Shift,Ctrl或 Alt键的状态
X,Y,返回当前鼠标指针的水平坐标和垂直坐标
返回目录
5.5 鼠标与键盘事件- 鼠标事件
[例 5.10] 用 Move方法移动窗体上的图片:
窗体上按下左键, 图片框的左上角移到当
前鼠标指针所在位置;按下右键, 则图片框
的中心移到当前鼠标指针所在位置 。
Private Sub Form_MouseDown(Button As Integer,Shift As Integer,
X As Single,Y As Single)
If Button = 1 Then '按下左键
Picture1.Move X,Y
End If
If Button = 2 Then '按下右键
Picture1.Move (X - Picture1.Width / 2),(Y - Picture1.Height / 2)
End If
End Sub
返回目录
5.5 鼠标与键盘事件- 鼠标事件
? MouseMove
Private Sub对象名称 _MouseMove(Button As Integer,
Shift As Integer,X As Single,Y As Single)
除 Button 参数 ( 见 教 材表 5.5), 其余 参 数的 含 义与
MouseDown和 MouseUp的相同
[例 5.11]让图片框中的文本框跟随鼠标指针移动
Private Sub Picture1_MouseMove(Button As Integer,Shift As
Integer,X As Single,Y As Single)
Text1.Text = " " & X & "," & Y '显示当前鼠标位置
Text1.Left = X
Text1.Top = Y
End Sub
返回目录
5.5 鼠标与键盘事件- 鼠标事件
2,拖放操作 (DragDrop)
? 若干术语
?Drag:按下鼠标按钮并移动对象的操作
?Drop:到达目的地后释放鼠标按钮的操作
?源:被拖动的对象
?目标:是源控件放下或经过的对象
只有目标对象能响应 DragDrop或 DragOver事件
返回目录
5.5 鼠标与键盘事件- 鼠标事件
? DragMode属性, 设置拖动模式
? DragMode=1 (vbAutomatic),自动模式
? DragMode=0 (vbManual),手工模式
?DragDrop事件
拖动一个控件到目的位置并释放鼠标按钮时, 在目标对象上
(不是被拖的对象 )触发 DragDrop事件
Private Sub 对象名称 _DragDrop(Source As Control,X As
Single,Y As Single)
其中, Source代表被拖动的控件, X和 Y表示鼠标指针的当前
坐标位置 。
返回目录
5.5 鼠标与键盘事件- 鼠标事件
? DragOver事件
拖动控件时, 在目标对象上触发 DragOver事件
Private Sub Form_DragOver(Source As Control,X As Single,
Y As Single,State As Single)
其中, Source,X和 Y参数的含义同 DragDrop事件, State参
数表示被拖控件与目标对象之间的相对位置关系 (见教材表
5.6)
?Drag方法
用于启动或停止手工拖动,[对象,] Drag <动作参数 >
动作参数有三种取值, 见教材表 5.7。
返回目录
5.5 鼠标与键盘事件- 鼠标事件
[例 5.12] 实现在窗体上随意拖动图片框或文本框
Private Sub Form_Load()
Picture1.DragMode = 1 '设置图片框控件为自动拖动模式
Text1.DragMode = 1 '设置文本框控件为自动拖动模式
End Sub
Private Sub Form_DragDrop(Source As Control,X As Single,Y As
Single)
Source.Move X,Y '将源控件移到鼠标指针所指新位置
End Sub
返回目录
5.5 鼠标与键盘事件- 键盘事件
1,KeyPress事件
?按下键盘上与 ASCII字符对应的键时触发 KeyPress事件
Private Sub 对象名称 _KeyPress(KeyAscii As Integer)
参数 KeyAscii返回按键的 ASCII代码值
?KeyAscii设为 0,则对象无法接收用户的输入
例如, 以下的事件过程只允许在 Text1中输入数字字符 0
~ 9
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 57 Then
KeyAscii = 0
End If
End Sub
返回目录
5.5 鼠标与键盘事件- 键盘事件
2,KeyDown和 KeyUp事件
?在按下 /释放键时触发
Private Sub对象名称 _KeyDown(KeyCode As Integer,Shift As
Integer)
Private Sub对象名称 _KeyUp(KeyCode As Integer,Shift As Integer)
KeyCode参数返回所按物理键的代码值; Shift参数返回一个整数
值, 指示 Shift,Ctrl和 Alt键的状态, 见教材表 5.4
? KeyPress事件与 KeyDown/KeyUp事件的区别
前者返回的是 字符 的 ASCII码, 后者返回的是, 键, 的代
码
例如, 当按, A”和, a”时将返回同一个 KeyCode值, 而对
KeyPress来说, 按, A”和, a”得到的 ASCII码是不一样的
返回目录
vbKeyA 65“A” 65,a” 97
5.5 鼠标与键盘事件- 键盘事件
[例 5.13] 模拟打字机
Private Sub Form_Load()
Form1.KeyPreview = True
End Sub '使窗体优先响应键盘事件
Private Sub Form_KeyDown(KeyCode As Integer,Shift As Integer)
If KeyCode = vbKeyC And Shift = 2 Then Unload Me
End Sub '按 Ctrl+C键 可关闭窗体
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then 'ASCII码为 13表示回车
List1.AddItem Text1.Text
Text1.Text = ""
End If
End Sub
返回目录
在文本框中输入, 回
车后输入的内容显示
在列表框中
5.5 鼠标与键盘事件- 键盘事件
[例 5.14]
用户名称可从组合框中选择;在, 用户名称, 框中按回
车键,, 密码, 框获得焦点;在, 密码, 框中按回车键,
等价于单击, 确定, 按钮;单击, 确定, 按钮后, 若密码
正确, 则打开有待建设的主窗体;单击, 取消, 按钮结束
程序 。
返回目录
5.6 菜单的设计与应用- 相关概念
1,菜单的类型
? 下拉菜单:常以菜单栏的形式出现在标题栏下面
? 弹出菜单 (快捷菜单 ):独立于菜单栏而显示在窗体上
的浮动菜单, 其菜单项取决于按下鼠标右键时指针所处
的位置 。
2,VB中的菜单控件
? 菜单和菜单项均看作是菜单控件
? 菜单控件两个最重要的属性
名称 (Name):程序 代码中用来引用菜单控件
标题 (Caption):出现在控件上的文本
? 菜单控件只响应 Click事件
返回目录
5.6 菜单的设计与应用- 使用菜单编辑器
打开菜单编辑器:
?,工具 → 菜单编辑器,
?工具栏, 菜单编辑器, 按钮
1,常用属性
?标题:设置 Caption属性
字符前加 &,该 字符成为访问键
只输入一个减号 -,创建分隔条
?名称:设置 Name属性
注:对分隔条,也需定义名称
?索引 (Index):用于 菜单控件数组
?快捷键, 复选 (Checked)
?有效 (Enabled),可见 (Visible)
返回目录
5.6 菜单的设计与应用- 使用菜单编辑器
2,编辑菜单控件
返回目录
如果菜 单
控件的前面
没有内缩符
号, ····”,表
明该控件建
立的是主菜
单, 否则为
菜单命令或
子菜单 。
5.6 菜单的设计与应用- 设计下拉菜单
方法,先通过菜单编辑器设计菜单, 然后编写各菜单控
件的 Click事件过程 。
[例 5.15] 创建简易编辑器
(1) 设计菜单
返回目录
5.6 菜单的设计与应用- 设计下拉菜单
[例 5.15] 创建简易编辑器
(2) 设计界面
? 菜单下面绘制两条直线 (两个 Line控件 ),一条为黑色,
一条为白色 。
黑线的 Y1和 Y2属性设为 0
白线的 Y1和 Y2属性设为 10
? 文本框 Text1:
MultiLine设为 True
ScrollBars设为 3
(3) 编写菜单控件的 Click事件过程
返回目录
5.6 菜单的设计与应用- 设计弹出菜单
? 用 PopupMenu方法可显示弹出式菜单
[对象,]PopupMenu 菜单控件名称
若, 对象, 缺省, 则在当前窗体中显示弹出菜单
? 通常, 按下鼠标右键时显示弹出菜单, 例如:
Private Sub Form 或控件名 称 _MouseUp (Button As
Integer,Shift As Integer,X As Single,Y As Single)
If Button = 2 Then '如果按的是鼠标右键
PopupMenu 菜单名 '显示弹出菜单
End If
End Sub
返回目录
5.6 菜单的设计与应用- 设计弹出菜单
[例 5.16] 弹出菜单设计
(1) 打开例 5.15所建立的工程
(2) 添加如下的事件过程:
Private Sub Text1_MouseDown(Button As Integer,Shift As
Integer,X As Single,Y As Single)
If Button = 2 Then
PopupMenu mnuEdit '弹出名称为 mnuEdit的菜单
End If
End Sub
注:若要创建一个不显示在菜单栏中的弹出菜单, 设计菜单
时, 需取消主菜单的, 可见, 复选框 。
返回目录
学习目标:
? 掌握窗体设计
? 掌握标准控件的应用
? 掌握多重窗体的设计与应用
? 掌握响应鼠标与键盘事件
? 掌握 菜单的设计与应用
第 5章 界面设计
教学内容:
5.1 窗体与控件应用基础
5.2 常用标准控件及应用案例
5.3 多窗体程序的设计与应用
5.4 VB工程管理
5.5 鼠标与键盘事件
5.6 菜单的设计与应用
5.1 应用基础 - 控件的基本操作
1,在窗体上添加控件
? 单击工具箱中的图标, 在窗体上拖放出所需控件
? 双击工具箱中的图标 (窗体中央出现一个缺省大小的控
件 ),根据需要移动控件或更改控件的大小 。
2,选中窗体上的控件
? 选中一个控件:单击
? 选中多个控件:
?Ctrl或 Shift+单击
?用鼠标拖放出一个矩形框
返回目录
5.1 应用基础 - 控件的基本操作
3,改变控件大小
? 拖动 选中控件四周的 8个控制点
? 修改 Width和 Height的属性 值
4,删除, 移动控件
? 删除:选中后按 Delete键
? 移动:
?拖动选中的控件
?修改 Top和 Left的属性值
返回目录
5.1 应用基础 - 控件的基本操作
5,复制控件
选中控件 →, 复制, →, 粘贴,
返回目录
根据需要选择
? 控件数组由一组相同类型的控件组成,名称 (Name
属性 )、属性和事件过程都相同。
? 通过 Index 属性可区分控件数组中的元素。
? 如果要从控件数组中撤消一个控件,需改变该控
件的 Name属性设置,并删除 Index属性设置。
5.1 应用基础 - 窗体和控件的常用属性
返回目录
属 性 说 明
Name 名称
Caption 标题
Font 字体
Enabled 有效
Visible 可见
BackColor,ForeColor 背景色, 前景色
BorderColor,FillColor 边框色, 填充色
5.1 应用基础 - 窗体的属性、事件与方法
1,窗体的属性
除 Name,Caption,Font,Enabled,Visible,BackColor、
ForeColor,FillColor属性, 常用属性还有:
? Appearance:设置窗体运行时是否以 3D效果显示
? BorderStyle,设置窗体的边框样式
? ControlBox,设置窗口是否显示控制菜单按钮
? Icon:设置 窗体最小化时显示的图标
? Height/Width:决定窗体的初始大小
? Left/Top:根据屏幕的左上角确定窗体的位置
? MaxButton/MinButton:是否具有, 最大化, /“最小化, 按
钮
? ShowInTaskbar:窗体运行时是否出现在任务栏中返回目录
5.1 应用基础 - 窗体的属性、事件与方法
2,窗体的常用事件
?Load/Unload:装入 /卸载
?Click:单击
?Activate/Deactivate:激活 /非激活
?Resize:尺寸改变
?Initialize:初始化 (在 Load事件后发生 )
?KeyPress:按键
? MouseDown/MouseUp/MouseOver:鼠标按下 /移动 /松开
返回目录
例如, 当 A窗体变
成活动窗体时, A窗
体发生 Activate事件;
当另一个窗体被激活
时, A 窗体发生
Deactivate事件 。
事件:能被对象识
别和响应的动作
5.1 应用基础 - 窗体的属性、事件与方法
3,窗体的常用方法
方法:对象要完成的操作 (特殊子程序 )
调用格式,[对象名称 ].<方法名称 >
? Print:打印文本
? Show:显示窗体
? Hide:隐藏窗体 (不是卸载 )
? Cls:清除运行时窗体中生成的图形和文本
返回目录
5.2 常用标准控件 - 1
标准控件由系统提供, 又称为内部控件 。
1,命令按钮 -1
? Caption属性:设置显示在按钮上的文本 (标题 )
返回目录
快捷键作用:
Alt+S =单击“开始”按
钮
Alt+X =单击,Exit”按
钮
5.2 常用标准控件 - 1
1,命令按钮 -2
? Default属性,设置缺省的 命令 按钮 。 若设置为 True,
按回车键相当于单击该按钮 。
? Cancel属性, 设置缺省的 取消 按钮 。 若设置为 True,
按 Esc键相当于单击该按钮 。
? Index属性,设置按钮在控件数组中的编号 。
命令按钮的默认事件是 Click(单击 ),不支持双击事件 。
返回目录
5.2 常用标准控件 - 1
2,标签
? Caption属性,设置在标签控件中显示的文本
? Alignment属性,设置标签中文本的对齐方式
( 0-左对齐, 1-右对齐, 2-居中 )
? BackStyle属性:设置标签控件背景是否透明
( 0-透明, 1-不透明 )
返回目录
例, 标签, 用户名
称, 和, 密码, 是透明
的
标签控件主要用来显示说明文字,因此
一般不对其进事件处理。
5.2 常用标准控件 - 1
3,文本框 -常用属性
? Text:设置文本框中显示的内容
? MultiLines:设置是否能输入或显示多行文本
取值 True或 False (缺省值 )
? ScrollBars,设置多行文本框中是否出现滚动条
( 0-没有, 1-水平, 2-垂直, 3-水平和垂直 )
? Locked:设置是否允许用户编辑文本框中的文本
取值 True或 False (缺省值 )
? Passwordchar,设置密码字符
若 MultiLine属性为 True,则 PasswordChar属性无效
返回目录
5.2 常用标准控件 - 1
3,文本框 -常用事件
? Change(默认事件 ):改变文本框内容时发生
? KeyPress:在文本框中按键盘上的键时发生
? Lostfocus:文本框失去焦点时发生
? Gotfocus:文本框获得焦点时发生
焦点是接收用户鼠标或键盘输入的能力 。
4,框架
? 可用于对其他控件进行分组
? 常用属性是 Caption,用于设置框架的标题文本
? 可先画出框架, 再将其它控件画到框架中;或者, 剪
切, 框架外的控件,, 粘贴, 到框架中
返回目录
5.2 常用标准控件 - 1
[例 5.1] 彩票开奖器
Private Sub Command1_Click(Index As Integer)
Command1(Index).Enabled = False '使点击过的按钮不可用
Randomize (Time)
Label1(Index).Caption = Int(Rnd * 10) '对应标签显示随机数
Label1(Index).FontSize = "24"
Label1(Index).ForeColor = RGB(255,0,0)
End Sub
返回目录
Command1
控件数组
5.2 常用标准控件 - 1
[例 5.1] 彩票开奖器
Private Sub Cmd_Redo_Click() '点击 ReDo按钮
For i = 0 To 3
Command1(i).Enabled = True
Label1(i).Caption = ""
Next i
End Sub
Private Sub Cmd_Exit_Click() '点击 Exit按钮
End
End Sub
返回目录
5.2 常用标准控件 - 1
[例 5.2] 同步显示
Private Sub Text1_Change()
Text2.Text = Text1.Text
End Sub
Private Sub Command1_Click() '重新输入
Text1.Text = ""
Text1.SetFocus
End Sub
返回目录
两个文本框:
MultiLine设为 True
ScrollBars设为 2
5.2 常用标准控件 - 1
[例 5.3] 考生登录
If Len(Txtcode.Text) < 8 Then
Lblsm.Caption = "准考证号必须输入,长度 8位 ! "
Txtcode.SetFocus
ElseIf Len(Txtname.Text) = 0 Then
Lblsm.Caption = "考生姓名必须输入 "
Txtname.SetFocus, Exit Sub
ElseIf Len(TxtSeat.Text) = 0 Then
Lblsm.Caption = "座位号必须输入 "
TxtSeat.SetFocus, Exit Sub
End If
Lblsm.Caption = "", MsgBox "正确 " 返回目录
“正确无误, 按
钮的 Click事件响
应代码:各项信
息均正确输入后
弹出一信息框 。
5.2 常用标准控件 - 1
[例 5.3] 考生登录
Private Sub Txtcode_LostFocus()
If Len(Txtcode.Text) < 8 Then
Lblsm.Caption = "准考证号必须输入,长度 8位 ! "
Txtcode.SetFocus
ElseIf Not IsNumeric(Txtcode.Text) Then
Lblsm.Caption = "准考证号必须是数字 ! "
Txtcode.SetFocus
Else
Lblsm.Caption = ""
End If
End Sub 返回目录
“准考证号, 文
本框失去焦点时
的事件响应代码:
检查是否输入 8位
数字 。
IsNumeric()是
判断数字函数
5.2 常用标准控件 - 1
[例 5.3] 考生登录
Private Sub Txtname_LostFocus()
If Len(Txtcode.Text) < 8 Or Not IsNumeric(Txtcode.Text) Then
Txtcode.SetFocus
ElseIf Len(Txtname.Text) = 0 Then
Lblsm.Caption = "考生姓名必须输入 ! "
Txtname.SetFocus
Else
Lblsm.Caption = ""
End If
End Sub
返回目录
“姓名, 文本
框失去焦点时
的事件响应代
码:检查姓名
是否输入 。
5.2 常用标准控件 - 1
[例 5.3] 考生登录
Private Sub TxtSeat_LostFocus()
If Len(Txtname.Text) = 0 Then
Txtname.SetFocus
ElseIf Len(TxtSeat.Text) = 0 Then
Lblsm.Caption = "座位号必须输入 ! "
TxtSeat.SetFocus
ElseIf Not IsNumeric(TxtSeat.Text) Then
Lblsm.Caption = "座位号必须是数字 "
TxtSeat.SetFocus
Else
Lblsm.Caption = ""
End If
End Sub 返回目录
“座位号, 文
本框失去焦点
时的事件响应
代码:检查座
位号是否输入,
是否是数字 。
5.2 常用标准控件 - 2
1,单选按钮
? 常用属性是 Caption和 Value。
? Value属性表示控件的状态, 缺省值为 False(未被选中 )。
? 常用事件是 Click
? 缺省时, 直接放到窗体上的所有单选按钮自动构成一组 。
2,复选框
? 常用属性是 Caption和 Value。
? Value属性表示控件的状态,0 - 未被选中 (缺省值 ),
1 - 选定 2 – 灰色
? 复选框的主要事件也是 Click
返回目录
5.2 常用标准控件 - 2
3,滚动条 和
? Value属性,滚动框在滚动条中的当前位置
? Max和 Min属性,Value的最大值和最小值 。
Max的缺省值为 32767,Min的缺省值为 0
? LargeChange和 SmallChange:
滚动条的主要事件是:
? Change:滚动框的位置改变时发生
? Scroll:在拖动滚动条上的滚动框时发生
返回目录
LargeChange 单击此
处时 Value的变化值 SmallChange 单击此处时 Value的变化值
5.2 常用标准控件 - 2
4,定时器
定时器是应用程序中控制定时发生事件的控件 。
常用属性:
? Enabled:设置定时器是否可用, 缺省为 True
? Interval:设置定时器事件之间所间隔的毫秒数,
缺省值为 0(Timer控件无效 ),最大为 65535
事件:
Timer,以 Interval属性指定的时间间隔发生
(Enabled属性设置为 True)
注:定时器控件只在设计时出现在窗体上
返回目录
5.2 常用标准控件 - 2
[例 5.4] 简易计算器
Private Sub Command1_Click() '计算
a = Val(Text1.Text),b = Val(Text2.Text)
If Option1 Then Text3.Text = a + b
If Option2 Then Text3.Text = a - b
If Option3 Then Text3.Text = a * b
If Option4 Then Text3.Text = a / b '思考,b=0怎么办?
End Sub
Private Sub Command2_Click() '清除
Text1.Text = "", Text2.Text = "", Text3.Text = ""
End Sub
返回目录
5.2 常用标准控件 - 2
[例 5.4] 简易计算器
返回目录
Private Sub Check1_Click()
If Check1.Value = 1 Then
Text3.FontItalic = True
Else
Text3.FontItalic = False
End If
End Sub
Private Sub Check2_Click()
If Check2.Value = 1 Then
Text3.FontBold = True
Else
Text3.FontBold = False
End If
End Sub
设置是否斜体显示 设置是否粗体显示
5.2 常用标准控件 - 2
[例 5.5] 求阶乘
返回目录
对 象
定时器
(Timer1)
水平滚动条
(HScroll1)
属性 属性值
Enabled False
Interval 500
Max 20
Min 1
LargeChange 1
SmallChange 1
Value 1
5.2 常用标准控件 - 2
[例 5.5] 求阶乘
Private Sub Timer1_Timer()
n = HScroll1.Value, nj = 1
For i = 1 To n '该循环计算 n!
nj = nj * i
Next
Cls, Form1.FontSize = 18
Label1.Caption = Str(n) + "!=", Label2.Caption = nj
If HScroll1.Value < 20 Then
HScroll1.Value = HScroll1.Value + 1
Else
HScroll1.Value = 1
End If
End Sub
返回目录
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub
Private Sub Command2_Click()
Timer1.Enabled = False
End Sub
5.2 常用标准控件 - 3
1,列表框
? 常用特定属性
? List,项目数组
引用形式,列表框名称,List(index)
第 1项的 index为 0,最后一项的 index为 ListCount-1
? ListCount,项目个数
? ListIndex,当前所选项目的索引号
第 1项为 0,最后一项为 ListCount-1
? Sorted,是否按字母顺序排序 (默认 false)
? 常用事件,Click,DblClick
返回目录
5.2 常用标准控件 - 3
1,列表框
? 常用方法
? AddItem:将项目添加到列表框。
列表框名称,AddItem item[,index]
item:项目的字符串表达式
index:插入新项目的位置
? RemoveItem,从列表框中删除项目
列表框名称,RemoveItem index
index:指定删除的项目位置序号
? Clear,删除列表框中的所有项目
列表框名称,Clear
返回目录
5.2 常用标准控件 - 3
2,组合框
? 组合框= 文本框+列表框
? 常用属性, 事件和方法与列表框相同
? 设置 Style属性,可决定组合框的样式 (三种 ):
? 0,下拉式组合框 (缺省值 )
含文本框和下拉式列表
? 1,简单组合框
含 文本框和不能下拉的列表
界面设计时须将控件绘制得大一些 )
? 2, 下拉式列表框
仅允许从下拉式列表中选择项目 返回目录
5.2 常用标准控件 - 3
[例 5.6] 对列表框中的项目进行添加, 删除和统计
设计界面:
?姓名文本框,TextXM
?显示当前人数的标签,Label2
?“添加, 按钮,CommandAdd
Default属性为 True
?“删除, 按钮,CommandDelete
Enabled属性为 False
?列表框,List1
返回目录
5.2 常用标准控件 - 3
[例 5.6] 对列表框中的项目进行添加, 删除和统计
Private Sub CommandAdd_Click() '单击, 添加, 按钮
If TextXM.Text <> "" Then
List1.AddItem TextXM.Text
Label2.Caption = List1.ListCount '显示当前人数
TextXM.Text = ""
End If
TextXM.SetFocus
End Sub
返回目录
5.2 常用标准控件 - 3
[例 5.6] 对列表框中的项目进行添加, 删除和统计
Private Sub List1_Click() '单击列表框中的项目
CommandDelete.Enabled = True '使, 删除, 按钮可用
End Sub
Private Sub CommandDelete_Click() '单击, 删除, 按钮
I = List1.ListIndex '获得当前所选项目的索引号
List1.RemoveItem I
Label2.Caption = List1.ListCount
CommandDelete.Enabled = False
End Sub
返回目录
5.2 常用标准控件 - 3
[例 5.7] 显示, 新增, 删除, 清空学生记录
设计界面:
?学号文本框,Txt_id
?姓名文本框,Txt_xm
?班级文本框,Txt_bj
?学生记录列表框,Lst_data
?“新增, 按钮,Cmd_add
Default属性为 True
?“删除, 按钮,Cmd_dele
?“清空, 按钮,Cmd_clear
返回目录
5.2 常用标准控件 - 3
[例 5.7] 显示, 新增, 删除, 清空学生记录
',通用, 段声明自定义数据类型及模块级变量
Private Type student
id As String * 6
xm As String
bj As String
End Type
Dim stud(50) As student
Dim num As Integer
Private Sub Form_Load()
num = 0 '统计记录数
Cmd_dele.Enabled = False
End Sub
返回目录
5.2 常用标准控件 - 3
[例 5.7] 显示, 新增, 删除, 清空学生记录
Private Sub Cmd_add_Click() '单击, 新增, 按钮
Lst_data.AddItem Txt_id + Space(5) + Txt_xm + Space(5) + Txt_bj
num = num + 1
'定义类型的变量, 通过 "变量名,成员名 "访问变量中的成员
With stud(num)
.id = Txt_id.Text
.xm = Txt_xm.Text
.bj = Txt_bj.Text
End With
If num = 1 Then Cmd_dele.Enabled = True
Txt_id.SetFocus
Txt_id = "", Txt_xm = "", Txt_bj = ""
End Sub
返回目录
5.2 常用标准控件 - 3
[例 5.7] 显示, 新增, 删除, 清空学生记录
Private Sub Cmd_dele_Click() '单击, 删除, 按钮
Dim n As Integer
Lst_data.RemoveItem Lst_data.ListIndex
For n = Lst_data.ListIndex + 1 To num - 1 '移位覆盖
stud(n).id = stud(n + 1).id
stud(n).xm = stud(n + 1).xm
stud(n).bj = stud(n + 1).bj
Next
num = num - 1 '记录总数 -1
If num = 0 Then Cmd_dele.Enabled = False
Txt_id = "", Txt_xm = "", Txt_bj = ""
End Sub
返回目录
5.2 常用标准控件 - 3
[例 5.7] 显示, 新增, 删除, 清空学生记录
Private Sub Cmd_clear_Click() '单击, 清空, 按钮
Txt_id = "", Txt_xm = "", Txt_bj = ""
Txt_id.SetFocus
End Sub
Private Sub Lst_data_Click() '单击列表框项目
Dim n As Integer
n = Lst_data.ListIndex
With stud(n + 1)
Txt_id.Text =,id
Txt_xm.Text =,xm
Txt_bj.Text =,bj
End With
End Sub
返回目录
5.2 常用标准控件 - 4
1,图片框和图像框
(1) 图片框 (PictureBox)和图像控件 (Image)的异同
? 都能用来显示图形或图片:位图 (.bmp),图标 (.ico)、
图元 (.wmf),JPEG或 GIF等
?主要区别:
– 图片框中可以包含其它控件, 而图像框不能 。
– 图片框可支持各种图形方法和打印方法, 而图像框不能 。
– 图像框比图片框占用的内存少, 显示速度快 。
返回目录
5.2 常用标准控件 - 4
(2) 将图片加载到窗体、图片框或图像框中
? 窗体设计时
设置 Picture属性 或,复制” /“剪切”图像 →,粘贴”
如果要取消图片,将 Picture属性重新设置为 (None)
? 程序代码中
?用 LoadPicture函数,例如:
Form1.Picture = LoadPicture("C:\windows\backgrnd.gif")
Form1.Picture = LoadPicture( ) '清除图片
?复制其它对象的图片,例如:
Picture1.Picture = Image1.Picture
返回目录
5.2 常用标准控件 - 4
(3) 调整图片大小
? 图片框,AutoSize属性设置控件是否按装入的图片大小自动
调整尺寸,缺省值 False。但图元文件 (.wmf)例外, AutoSize为
False时,装入的图形会自动调整大小以适应图片框。
? 图像框,Stretch属性为 False(缺省值 ),控件自动调整大小以
适应装载的图形的尺寸; Stretch属性为 True,则加载的图形自
动调整大小以适应控件,即,调整图像框可实现图形的放大和
缩小 。
? 窗体:不随装载的图片大小而自动改变,图片大于窗体的部
分将被裁剪掉。
返回目录
5.2 常用标准控件 - 4
(4) 控件的边框样式
BordeStyle属性,0(无边框 ),1(有边框 )
? 图片框,BordeStyle属性缺省值为 1
? 图像框,BordeStyle属性缺省值为 0
返回目录
5.2 常用标准控件 - 4
[例 5.8] 图片框和图像框应用示例
Image1的属性设置:
? Stretch为 True
? BordeStyle为 1
? Height和 Width均为 1800
'在窗体的通用段声明模块变量:
Dim n As Integer 'n记录图片框中的输出项数
Private Sub Form_Load()
n = 0 'n赋初值
End Sub
返回目录
5.2 常用标准控件 - 4
'单击“放大”按钮
Private Sub Command1_Click()
Image1.Width = Image1.Width * 1.25
Image1.Height = Image1.Height * 1.25
Picture1.Print "放大图片 ", n = n + 1
If n = 10 Then Picture1.Cls,n = 0
End Sub
'单击“缩小”按钮
Private Sub Command2_Click()
Image1.Width = Image1.Width * 0.75
Image1.Height = Image1.Height * 0.75
Picture1.Print "缩小图片 ", n = n + 1
If n = 10 Then Picture1.Cls,n = 0
End Sub
返回目录
5.2 常用标准控件 - 4
Private Sub Command3_Click() '单击“还原”按钮
Picture1.Cls
Image1.Height = 1800
Image1.Width = 1800
End Sub
返回目录
5.2 常用标准控件 - 4
2,直线控件
?功能,在窗体, 框架或图片框中绘制线条
?移动和调整线条大小
设置 X1,X2,Y1,Y2属性
其中, X1,Y1-左端点坐标, X2,Y2-右端点坐标
?设置线条的颜色和样式
设置 BoderColor和 BordeStyle属性
注意:若 BorderStyle=0,BorderColor属性不起作用
?设置线条的宽度
设置 BorderWidth属性
返回目录
5.2 常用标准控件 - 4
3,形状控件
?功能,在窗体上绘制有规则的图形
? Shape属性设置控件的具体形状
返回目录
5.2 常用标准控件 - 5
执行, 工程 → 部件, 命令可添加其他外部控件
[例 5.9] DTPicker控件应用
(1) 添加 DTPicker控件:
返回目录
5.2 常用标准控件 - 5
[例 5.9] DTPicker控件应用
(2) 窗体设计:
(3),输出, 按钮的 Click事件过程:
Private Sub Command1_Click()
MsgBox "你的订票日期是 " & DTPicker1.Value,,"输出 "
End Sub
返回目录
5.3 多窗体程序的设计与应用
1,添加窗体
,工程 → 添加窗体,
2,显示或隐藏窗体
?显示指定窗体
Object.Show [Style]
Object-窗体名称
Style-显示模式 (0,1)
?隐藏指定窗体
Object.Hide
返回目录
5.3 多窗体程序的设计与应用
3,设置启动窗体
?默认第一个窗体 (Form1)为启动窗体
?改变启动窗体:, 工程 → 工程属性,
返回目录
5.3 多窗体程序的设计与应用
4,应用案例,设计试题库管理程序 ctk.vbp的初步框架
返回目录
点击后可打开相应的窗体
5.3 多窗体程序的设计与应用
(1) 创建用户登录窗体 Frmdl
① 新建工程:窗体保存为 Frmdl.frm,工程保存为 ctk.vbp。
② 窗体设计:
?下面 4个按钮为一控件数组 Cmdml(0)~ Cmdml(3)
?除, 退出, 按钮外, 其它三个按钮的 Enabled属性设为 False
?密码文本框 Txtcode的 PasswordChar属性设为, *”
?底部提示标签 Lblsm的 Caption属性设为空
返回目录
5.3 多窗体程序的设计与应用
③ 程序设计:
Dim cs As Integer 'cs记录出错次数
Private Sub Cmdml_Click(Index As Integer)
Select Case Index
Case 0,'单击 "题库管理 "按钮
Frmsele.Show 1
Case 1,'单击 "自动选题 "按钮
Frmxt.Show 1
Case 2,'单击 "制作考盘 "按钮
Frmcopy.Show 1
Case 3,'单击 "退出 "按钮
End
End Select
End Sub
返回目录
控件数组按钮的
Click事件响应代
码:点击后可打
开相应的窗体
5.3 多窗体程序的设计与应用
Private Sub Cmgqd_Click() '单击, 确定, 按钮
If cs < 3 Then
If UCase(TxtName.Text) <> "TEACHER" Then
Lblsm.Caption = "用户名错误, 请重新输入 ! "
cs = cs + 1,TxtName.SetFocus
ElseIf (Txtcode.Text) <> "kaoshi" Then
Lblsm.Caption = "密码错误, 请重新输入 ! "
cs = cs + 1, Txtcode.SetFocus
Else '用户名和密码均正确的情况
Lblsm.Caption = "", Cmdml(0).Enabled = True
Cmdml(1).Enabled = True, Cmdml(2).Enabled = True
End If
Else
Lblsm.Caption = "已连错三次, 请退出 ! ",Cmdml(3).SetFocus
End If
End Sub 返回目录
5.3 多窗体程序的设计与应用
(2) 添加题库管理窗体 Frmsele
①,工程 → 添加窗体,, 新建一个窗体, 保存为 Frmsele.frm。
② 在该窗体中添加一个命令按钮,
③ 编写 Click事件响应代码:
Private Sub Cmd_exit_Click()
Unload Me
End Sub
(3) 仿上, 添加窗体 Frmxz.frm
(4) 仿上, 添加窗体 Frmcopy.frm
返回目录
5.4 VB工程管理- 工程的组成
? VB工程包含多种类型的文件
? 其中最常用的文件是:
?工程文件
包含与该工程有关的全部文件, 对象以及所设置的环境选项的
信息 (见教材 图 5-30 ),扩展名,vbp
?窗体文件
包含窗体及其控件有关属性的文本描述, 常量或变量的声明,
以及窗体内的过程代码等 (见教材 图 5-31),扩展名为,frm
若窗体中对象的数据含有二进制属性, 保存该窗体时将自动生
成同名的二进制数据文件, 扩展名为,frx
?标准模块文件
通常用来定义供其他窗体或模块引用的全局常量, 变量, 过程
等, 扩展名为,bas 返回目录
5.4 VB工程管理- 工程的基本操作
1,新建, 打开和保存工程
新建工程
? 启动 VB时:, 新建工程, 对话框的, 新建, 选项卡
? VB窗口中:, 文件 → 新建工程,
打开工程
? 启动 VB时:, 现存,,, 新建,
? VB窗口中:, 文件 → 打开工程,
保存工程
? 单击, 保存工程, 按钮
?, 文件 → 保存工程,
?, 文件 → 工程另存为,
返回目录
5.4 VB工程管理- 工程的基本操作
2,工程中添加, 移除和保存文件
? 添加 指定类型的 文件:, 工程 → 添加 …”
? 删除选定的文件:, 工程 → 移除 …”
? 保存选定的文件,, 文件 → 保存 …”
? 另存选定的文件,, 文件 → … 另存为,
注:
? 上述操作可用快捷菜单中的相关命令
? 在当前工程中添加现存的文件时 (例如,添加其他工程中
的窗体 ),并不是添加该文件的副本,而只是简单地在工
程中包含对该文件的引用。
返回目录
5.5 鼠标与键盘事件- 鼠标事件
1,三个基本的鼠标事件
MouseDown,MouseUp,MouseMove
? MouseDown和 MouseUp
Private Sub 对象名称 _MouseDown(Button As Integer,
Shift As Integer,X As Single,Y As Single)
Private Sub 对象名称 _MouseUp(Button As Integer,Shift
As Integer,X As Single,Y As Single)
其中:
Button:返回一个整数 ( 1-左, 2-右, 4-中 )
Shift:返回一个整数 (见教材表 5.4 )
代表 Shift,Ctrl或 Alt键的状态
X,Y,返回当前鼠标指针的水平坐标和垂直坐标
返回目录
5.5 鼠标与键盘事件- 鼠标事件
[例 5.10] 用 Move方法移动窗体上的图片:
窗体上按下左键, 图片框的左上角移到当
前鼠标指针所在位置;按下右键, 则图片框
的中心移到当前鼠标指针所在位置 。
Private Sub Form_MouseDown(Button As Integer,Shift As Integer,
X As Single,Y As Single)
If Button = 1 Then '按下左键
Picture1.Move X,Y
End If
If Button = 2 Then '按下右键
Picture1.Move (X - Picture1.Width / 2),(Y - Picture1.Height / 2)
End If
End Sub
返回目录
5.5 鼠标与键盘事件- 鼠标事件
? MouseMove
Private Sub对象名称 _MouseMove(Button As Integer,
Shift As Integer,X As Single,Y As Single)
除 Button 参数 ( 见 教 材表 5.5), 其余 参 数的 含 义与
MouseDown和 MouseUp的相同
[例 5.11]让图片框中的文本框跟随鼠标指针移动
Private Sub Picture1_MouseMove(Button As Integer,Shift As
Integer,X As Single,Y As Single)
Text1.Text = " " & X & "," & Y '显示当前鼠标位置
Text1.Left = X
Text1.Top = Y
End Sub
返回目录
5.5 鼠标与键盘事件- 鼠标事件
2,拖放操作 (DragDrop)
? 若干术语
?Drag:按下鼠标按钮并移动对象的操作
?Drop:到达目的地后释放鼠标按钮的操作
?源:被拖动的对象
?目标:是源控件放下或经过的对象
只有目标对象能响应 DragDrop或 DragOver事件
返回目录
5.5 鼠标与键盘事件- 鼠标事件
? DragMode属性, 设置拖动模式
? DragMode=1 (vbAutomatic),自动模式
? DragMode=0 (vbManual),手工模式
?DragDrop事件
拖动一个控件到目的位置并释放鼠标按钮时, 在目标对象上
(不是被拖的对象 )触发 DragDrop事件
Private Sub 对象名称 _DragDrop(Source As Control,X As
Single,Y As Single)
其中, Source代表被拖动的控件, X和 Y表示鼠标指针的当前
坐标位置 。
返回目录
5.5 鼠标与键盘事件- 鼠标事件
? DragOver事件
拖动控件时, 在目标对象上触发 DragOver事件
Private Sub Form_DragOver(Source As Control,X As Single,
Y As Single,State As Single)
其中, Source,X和 Y参数的含义同 DragDrop事件, State参
数表示被拖控件与目标对象之间的相对位置关系 (见教材表
5.6)
?Drag方法
用于启动或停止手工拖动,[对象,] Drag <动作参数 >
动作参数有三种取值, 见教材表 5.7。
返回目录
5.5 鼠标与键盘事件- 鼠标事件
[例 5.12] 实现在窗体上随意拖动图片框或文本框
Private Sub Form_Load()
Picture1.DragMode = 1 '设置图片框控件为自动拖动模式
Text1.DragMode = 1 '设置文本框控件为自动拖动模式
End Sub
Private Sub Form_DragDrop(Source As Control,X As Single,Y As
Single)
Source.Move X,Y '将源控件移到鼠标指针所指新位置
End Sub
返回目录
5.5 鼠标与键盘事件- 键盘事件
1,KeyPress事件
?按下键盘上与 ASCII字符对应的键时触发 KeyPress事件
Private Sub 对象名称 _KeyPress(KeyAscii As Integer)
参数 KeyAscii返回按键的 ASCII代码值
?KeyAscii设为 0,则对象无法接收用户的输入
例如, 以下的事件过程只允许在 Text1中输入数字字符 0
~ 9
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 57 Then
KeyAscii = 0
End If
End Sub
返回目录
5.5 鼠标与键盘事件- 键盘事件
2,KeyDown和 KeyUp事件
?在按下 /释放键时触发
Private Sub对象名称 _KeyDown(KeyCode As Integer,Shift As
Integer)
Private Sub对象名称 _KeyUp(KeyCode As Integer,Shift As Integer)
KeyCode参数返回所按物理键的代码值; Shift参数返回一个整数
值, 指示 Shift,Ctrl和 Alt键的状态, 见教材表 5.4
? KeyPress事件与 KeyDown/KeyUp事件的区别
前者返回的是 字符 的 ASCII码, 后者返回的是, 键, 的代
码
例如, 当按, A”和, a”时将返回同一个 KeyCode值, 而对
KeyPress来说, 按, A”和, a”得到的 ASCII码是不一样的
返回目录
vbKeyA 65“A” 65,a” 97
5.5 鼠标与键盘事件- 键盘事件
[例 5.13] 模拟打字机
Private Sub Form_Load()
Form1.KeyPreview = True
End Sub '使窗体优先响应键盘事件
Private Sub Form_KeyDown(KeyCode As Integer,Shift As Integer)
If KeyCode = vbKeyC And Shift = 2 Then Unload Me
End Sub '按 Ctrl+C键 可关闭窗体
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then 'ASCII码为 13表示回车
List1.AddItem Text1.Text
Text1.Text = ""
End If
End Sub
返回目录
在文本框中输入, 回
车后输入的内容显示
在列表框中
5.5 鼠标与键盘事件- 键盘事件
[例 5.14]
用户名称可从组合框中选择;在, 用户名称, 框中按回
车键,, 密码, 框获得焦点;在, 密码, 框中按回车键,
等价于单击, 确定, 按钮;单击, 确定, 按钮后, 若密码
正确, 则打开有待建设的主窗体;单击, 取消, 按钮结束
程序 。
返回目录
5.6 菜单的设计与应用- 相关概念
1,菜单的类型
? 下拉菜单:常以菜单栏的形式出现在标题栏下面
? 弹出菜单 (快捷菜单 ):独立于菜单栏而显示在窗体上
的浮动菜单, 其菜单项取决于按下鼠标右键时指针所处
的位置 。
2,VB中的菜单控件
? 菜单和菜单项均看作是菜单控件
? 菜单控件两个最重要的属性
名称 (Name):程序 代码中用来引用菜单控件
标题 (Caption):出现在控件上的文本
? 菜单控件只响应 Click事件
返回目录
5.6 菜单的设计与应用- 使用菜单编辑器
打开菜单编辑器:
?,工具 → 菜单编辑器,
?工具栏, 菜单编辑器, 按钮
1,常用属性
?标题:设置 Caption属性
字符前加 &,该 字符成为访问键
只输入一个减号 -,创建分隔条
?名称:设置 Name属性
注:对分隔条,也需定义名称
?索引 (Index):用于 菜单控件数组
?快捷键, 复选 (Checked)
?有效 (Enabled),可见 (Visible)
返回目录
5.6 菜单的设计与应用- 使用菜单编辑器
2,编辑菜单控件
返回目录
如果菜 单
控件的前面
没有内缩符
号, ····”,表
明该控件建
立的是主菜
单, 否则为
菜单命令或
子菜单 。
5.6 菜单的设计与应用- 设计下拉菜单
方法,先通过菜单编辑器设计菜单, 然后编写各菜单控
件的 Click事件过程 。
[例 5.15] 创建简易编辑器
(1) 设计菜单
返回目录
5.6 菜单的设计与应用- 设计下拉菜单
[例 5.15] 创建简易编辑器
(2) 设计界面
? 菜单下面绘制两条直线 (两个 Line控件 ),一条为黑色,
一条为白色 。
黑线的 Y1和 Y2属性设为 0
白线的 Y1和 Y2属性设为 10
? 文本框 Text1:
MultiLine设为 True
ScrollBars设为 3
(3) 编写菜单控件的 Click事件过程
返回目录
5.6 菜单的设计与应用- 设计弹出菜单
? 用 PopupMenu方法可显示弹出式菜单
[对象,]PopupMenu 菜单控件名称
若, 对象, 缺省, 则在当前窗体中显示弹出菜单
? 通常, 按下鼠标右键时显示弹出菜单, 例如:
Private Sub Form 或控件名 称 _MouseUp (Button As
Integer,Shift As Integer,X As Single,Y As Single)
If Button = 2 Then '如果按的是鼠标右键
PopupMenu 菜单名 '显示弹出菜单
End If
End Sub
返回目录
5.6 菜单的设计与应用- 设计弹出菜单
[例 5.16] 弹出菜单设计
(1) 打开例 5.15所建立的工程
(2) 添加如下的事件过程:
Private Sub Text1_MouseDown(Button As Integer,Shift As
Integer,X As Single,Y As Single)
If Button = 2 Then
PopupMenu mnuEdit '弹出名称为 mnuEdit的菜单
End If
End Sub
注:若要创建一个不显示在菜单栏中的弹出菜单, 设计菜单
时, 需取消主菜单的, 可见, 复选框 。
返回目录