null第5章 界面设计第5章 界面设计学习目标:
掌握窗体设计
掌握标准控件的应用
掌握多重窗体的设计与应用
掌握响应鼠标与键盘事件
掌握菜单的设计与应用 第5章 界面设计第5章 界面设计 教学内容:
5.1 窗体与控件应用基础
5.2 常用标准控件及应用案例
5.3 多窗体程序的设计与应用
5.4 VB工程管理
5.5 鼠标与键盘事件
5.6 菜单的设计与应用 5.1 应用基础-控件的基本操作5.1 应用基础-控件的基本操作1. 在窗体上添加控件
单击工具箱中的图标,在窗体上拖放出所需控件
双击工具箱中的图标(窗体中央出现一个缺省大小的控件),根据需要移动控件或更改控件的大小。
2. 选中窗体上的控件
选中一个控件:单击
选中多个控件:
Ctrl或Shift+单击
用鼠标拖放出一个矩形框返回目录5.1 应用基础-控件的基本操作5.1 应用基础-控件的基本操作3. 改变控件大小
拖动选中控件四周的8个控制点
修改Width和Height的属性值
4. 删除、移动控件
删除:选中后按Delete键
移动:
拖动选中的控件
修改Top和Left的属性值 返回目录5.1 应用基础-控件的基本操作5.1 应用基础-控件的基本操作5. 复制控件
选中控件→“复制”→“粘贴”
返回目录控件数组由一组相同类型的控件组成,名称(Name属性)、属性和事件过程都相同。
通过Index 属性可区分控件数组中的元素。
如果要从控件数组中撤消一个控件,需改变该控件的Name属性设置,并删除Index属性设置。 5.1 应用基础-窗体和控件的常用属性5.1 应用基础-窗体和控件的常用属性返回目录5.1 应用基础-窗体的属性、事件与方法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 应用基础-窗体的属性、事件与方法5.1 应用基础-窗体的属性、事件与方法2. 窗体的常用事件
Load/Unload:装入/卸载
Click:单击
Activate/Deactivate:激活/非激活
Resize:尺寸改变
Initialize:初始化(在Load事件后发生)
KeyPress:按键
MouseDown/MouseUp/MouseOver:鼠标按下/移动/松开返回目录 例如,当A窗体变成活动窗体时,A窗体发生Activate事件;当另一个窗体被激活时,A窗体发生Deactivate事件。5.1 应用基础-窗体的属性、事件与方法5.1 应用基础-窗体的属性、事件与方法3. 窗体的常用方法
方法:对象要完成的操作(特殊子程序)
调用格式:[对象名称].<方法名称>
Print:打印文本
Show:显示窗体
Hide:隐藏窗体(不是卸载)
Cls:清除运行时窗体中生成的图形和文本返回目录5.2 常用标准控件-1 5.2 常用标准控件-1 标准控件由系统提供,又称为内部控件。
1. 命令按钮-1
Caption属性:设置显示在按钮上的文本(标题) 返回目录快捷键作用:
Alt+S =单击“开始”按钮
Alt+X =单击“Exit”按钮 5.2 常用标准控件-1 5.2 常用标准控件-1 1. 命令按钮-2
Default属性:设置缺省的命令按钮。若设置为True,按回车键相当于单击该按钮。
Cancel属性 :设置缺省的取消按钮。若设置为True,按Esc键相当于单击该按钮。
Index属性:设置按钮在控件数组中的编号。
命令按钮的默认事件是Click(单击),不支持双击事件。返回目录5.2 常用标准控件-1 5.2 常用标准控件-1 2. 标签
Caption属性:设置在标签控件中显示的文本
Alignment属性:设置标签中文本的对齐方式
(0-左对齐,1-右对齐,2-居中)
BackStyle属性:设置标签控件背景是否透明
(0-透明,1-不透明) 返回目录 例,标签“用户名称”和“密码”是透明的标签控件主要用来显示说明文字,因此一般不对其进事件处理。5.2 常用标准控件-1 5.2 常用标准控件-1 3. 文本框 -常用属性
Text:设置文本框中显示的内容
MultiLines:设置是否能输入或显示多行文本
取值True或 False (缺省值)
ScrollBars:设置多行文本框中是否出现滚动条
(0-没有,1-水平,2-垂直,3-水平和垂直)
Locked:设置是否允许用户编辑文本框中的文本
取值True或 False (缺省值)
Passwordchar:设置密码字符
若MultiLine属性为True,则PasswordChar属性无效返回目录5.2 常用标准控件-1 5.2 常用标准控件-1 3. 文本框 -常用事件
Change(默认事件):改变文本框内容时发生
KeyPress:在文本框中按键盘上的键时发生
Lostfocus:文本框失去焦点时发生
Gotfocus:文本框获得焦点时发生
焦点是接收用户鼠标或键盘输入的能力。
4. 框架
可用于对其他控件进行分组
常用属性是Caption,用于设置框架的标题文本
可先画出框架,再将其它控件画到框架中;或者“剪切”框架外的控件,“粘贴”到框架中返回目录5.2 常用标准控件-1 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返回目录5.2 常用标准控件-1 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 常用标准控件-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设为25.2 常用标准控件-1 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.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.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.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 5.2 常用标准控件-2 1. 单选按钮
常用属性是Caption和Value。
Value属性表示控件的状态,缺省值为False(未被选中)。
常用事件是Click
缺省时,直接放到窗体上的所有单选按钮自动构成一组。
2. 复选框
常用属性是Caption和Value。
Value属性表示控件的状态:0 - 未被选中(缺省值),
1 - 选定 2 – 灰色
复选框的主要事件也是Click返回目录5.2 常用标准控件-2 5.2 常用标准控件-2 3. 滚动条 和
Value属性:滚动框在滚动条中的当前位置
Max和Min属性: Value的最大值和最小值。
Max的缺省值为32767,Min的缺省值为0
LargeChange和SmallChange:
滚动条的主要事件是:
Change:滚动框的位置改变时发生
Scroll:在拖动滚动条上的滚动框时发生 返回目录5.2 常用标准控件-2 5.2 常用标准控件-2 4. 定时器
定时器是应用程序中控制定时发生事件的控件。
常用属性:
Enabled:设置定时器是否可用,缺省为True
Interval:设置定时器事件之间所间隔的毫秒数,
缺省值为0(Timer控件无效),最大为65535
事件:
Timer:以Interval属性指定的时间间隔发生
(Enabled属性设置为True)
注:定时器控件只在设计时出现在窗体上返回目录5.2 常用标准控件-2 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.2 常用标准控件-2 [例5.4] 简易计算器 返回目录设置是否斜体显示设置是否粗体显示5.2 常用标准控件-2 5.2 常用标准控件-2 [例5.5] 求阶乘 返回目录5.2 常用标准控件-2 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 SubPrivate Sub Command2_Click()
Timer1.Enabled = False
End Sub5.2 常用标准控件-3 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 5.2 常用标准控件-3 1. 列表框
常用方法
AddItem:将项目添加到列表框。
列表框名称.AddItem item[, index]
item:项目的字符串表达式
index:插入新项目的位置
RemoveItem:从列表框中删除项目
列表框名称.RemoveItem index
index:指定删除的项目位置序号
Clear:删除列表框中的所有项目
列表框名称.Clear 返回目录5.2 常用标准控件-3 5.2 常用标准控件-3 2. 组合框
组合框=文本框+列表框
常用属性、事件和方法与列表框相同
设置Style属性,可决定组合框的样式(三种):
0:下拉式组合框 (缺省值)
含文本框和下拉式列表
1:简单组合框
含文本框和不能下拉的列表
界面设计时须将控件绘制得大一些)
2 :下拉式列表框
仅允许从下拉式列表中选择项目返回目录5.2 常用标准控件-3 5.2 常用标准控件-3 [例5.6] 对列表框中的项目进行添加、删除和统计
设计界面:
姓名文本框:TextXM
显示当前人数的标签:Label2
“添加”按钮:CommandAdd
Default属性为True
“删除”按钮:CommandDelete
Enabled属性为False
列表框:List1
返回目录5.2 常用标准控件-3 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.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.2 常用标准控件-3 [例5.7] 显示、新增、删除、清空学生记录
设计界面:
学号文本框:Txt_id
姓名文本框:Txt_xm
班级文本框:Txt_bj
学生记录列表框:Lst_data
“新增”按钮:Cmd_add
Default属性为True
“删除”按钮:Cmd_dele
“清空”按钮:Cmd_clear 返回目录5.2 常用标准控件-3 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.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.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.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 5.2 常用标准控件-4 1. 图片框和图像框
(1) 图片框(PictureBox)和图像控件(Image)的异同
都能用来显示图形或图片:位图(.bmp)、图标(.ico)、图元(.wmf)、 JPEG或GIF等
主要区别:
图片框中可以包含其它控件,而图像框不能。
图片框可支持各种图形方法和打印方法,而图像框不能。
图像框比图片框占用的内存少,显示速度快。返回目录5.2 常用标准控件-4 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 5.2 常用标准控件-4 (3) 调整图片大小
图片框:AutoSize属性设置控件是否按装入的图片大小自动调整尺寸,缺省值False。但图元文件(.wmf)例外,AutoSize为False时,装入的图形会自动调整大小以适应图片框。
图像框:Stretch属性为False(缺省值),控件自动调整大小以适应装载的图形的尺寸;Stretch属性为True,则加载的图形自动调整大小以适应控件,即,调整图像框可实现图形的放大和缩小 。
窗体:不随装载的图片大小而自动改变,图片大于窗体的部分将被裁剪掉。 返回目录5.2 常用标准控件-4 5.2 常用标准控件-4 (4) 控件的边框样式
BordeStyle属性:0(无边框)、1(有边框)
图片框:BordeStyle属性缺省值为1
图像框: BordeStyle属性缺省值为0返回目录5.2 常用标准控件-4 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 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 5.2 常用标准控件-4 Private Sub Command3_Click() '单击“还原”按钮
Picture1.Cls
Image1.Height = 1800
Image1.Width = 1800
End Sub返回目录5.2 常用标准控件-4 5.2 常用标准控件-4 2. 直线控件
功能:在窗体、框架或图片框中绘制线条
移动和调整线条大小
设置X1、X2、Y1、Y2属性
其中,X1、Y1-左端点坐标,X2、Y2-右端点坐标
设置线条的颜色和样式
设置BoderColor和BordeStyle属性
注意:若BorderStyle=0,BorderColor属性不起作用
设置线条的宽度
设置BorderWidth属性 返回目录5.2 常用标准控件-4 5.2 常用标准控件-4 3. 形状控件
功能:在窗体上绘制有规则的图形
Shape属性设置控件的具体形状 返回目录5.2 常用标准控件-5 5.2 常用标准控件-5 执行“工程→部件”命令可添加其他外部控件
[例5.9] DTPicker控件应用
(1) 添加DTPicker控件: 返回目录5.2 常用标准控件-5 5.2 常用标准控件-5 [例5.9] DTPicker控件应用
(2) 窗体设计:
(3) “输出”按钮的Click事件过程:
Private Sub Command1_Click()
MsgBox "你的订票日期是" & DTPicker1.Value , , "输出"
End Sub 返回目录5.3 多窗体程序的设计与应用 5.3 多窗体程序的设计与应用 1. 添加窗体
“工程→添加窗体”
2. 显示或隐藏窗体
显示指定窗体
Object.Show [Style]
Object-窗体名称
Style-显示模式(0、1)
隐藏指定窗体
Object.Hide 返回目录5.3 多窗体程序的设计与应用 5.3 多窗体程序的设计与应用 3. 设置启动窗体
默认第一个窗体(Form1)为启动窗体
改变启动窗体:“工程→工程属性”
返回目录5.3 多窗体程序的设计与应用 5.3 多窗体程序的设计与应用 4. 应用案例:设计试题库管理程序ctk.vbp的初步框架
返回目录5.3 多窗体程序的设计与应用 5.3 多窗体程序的设计与应用 (1) 创建用户登录窗体Frmdl
① 新建工程:窗体保存为Frmdl.frm,工程保存为ctk.vbp。
② 窗体设计:
下面4个按钮为一控件数组Cmdml(0)~Cmdml(3)
除“退出”按钮外,其它三个按钮的Enabled属性设为False
密码文本框Txtcode的PasswordChar属性设为“*”
底部提示标签Lblsm的Caption属性设为空 返回目录5.3 多窗体程序的设计与应用 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 多窗体程序的设计与应用 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 多窗体程序的设计与应用 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工程管理-工程的组成 5.4 VB工程管理-工程的组成 VB工程包含多种类型的文件
其中最常用的文件是:
工程文件
包含与该工程有关的全部文件、对象以及所设置的环境选项的信息(见教材图5-30 ),扩展名.vbp
窗体文件
包含窗体及其控件有关属性的文本描述、常量或变量的声明、以及窗体内的过程代码等(见教材图5-31),扩展名为.frm
若窗体中对象的数据含有二进制属性,保存该窗体时将自动生成同名的二进制数据文件,扩展名为.frx
标准模块文件
通常用来定义供其他窗体或模块引用的全局常量、变量、过程等,扩展名为.bas 返回目录5.4 VB工程管理-工程的基本操作 5.4 VB工程管理-工程的基本操作 1. 新建、打开和保存工程
新建工程
启动VB时:“新建工程”对话框的“新建”选项卡
VB窗口中:“文件→新建工程”
打开工程
启动VB时: “现存”、“新建”
VB窗口中:“文件→打开工程”
保存工程
单击 “保存工程”按钮
“文件→保存工程”
“文件→工程另存为”返回目录5.4 VB工程管理-工程的基本操作 5.4 VB工程管理-工程的基本操作 2. 工程中添加、移除和保存文件
添加指定类型的文件:“工程→添加…”
删除选定的文件:“工程→移除…”
保存选定的文件:“文件→保存…”
另存选定的文件:“文件→…另存为”
注:
上述操作可用快捷菜单中的相关命令
在当前工程中添加现存的文件时(例如,添加其他工程中的窗体),并不是添加该文件的副本,而只是简单地在工程中包含对该文件的引用。 返回目录5.5 鼠标与键盘事件-鼠标事件 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.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 鼠标与键盘事件-鼠标事件 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 鼠标与键盘事件-鼠标事件 5.5 鼠标与键盘事件-鼠标事件 2. 拖放操作(DragDrop)
若干术语
Drag:按下鼠标按钮并移动对象的操作
Drop:到达目的地后释放鼠标按钮的操作
源:被拖动的对象
目标:是源控件放下或经过的对象
只有目标对象能响应DragDrop或DragOver事件 返回目录5.5 鼠标与键盘事件-鼠标事件 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 鼠标与键盘事件-鼠标事件 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.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 鼠标与键盘事件-键盘事件 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 鼠标与键盘事件-键盘事件 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” 975.5 鼠标与键盘事件-键盘事件 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.5 鼠标与键盘事件-键盘事件 [例5.14]
用户名称可从组合框中选择;在“用户名称”框中按回车键,“密码”框获得焦点;在“密码”框中按回车键,等价于单击“确定”按钮;单击“确定”按钮后,若密码正确,则打开有待建设的主窗体;单击“取消”按钮结束程序。返回目录5.6 菜单的设计与应用-相关概念 5.6 菜单的设计与应用-相关概念 1. 菜单的类型
下拉菜单:常以菜单栏的形式出现在标题栏下面
弹出菜单(快捷菜单):独立于菜单栏而显示在窗体上的浮动菜单,其菜单项取决于按下鼠标右键时指针所处的位置。
2. VB中的菜单控件
菜单和菜单项均看作是菜单控件
菜单控件两个最重要的属性
名称(Name):程序代码中用来引用菜单控件
标题(Caption):出现在控件上的文本
菜单控件只响应Click事件 返回目录5.6 菜单的设计与应用-使用菜单编辑器 5.6 菜单的设计与应用-使用菜单编辑器 打开菜单编辑器:
“工具→菜单编辑器”
工具栏“菜单编辑器”按钮
1. 常用属性
标题:设置Caption属性
字符前加&,该字符成为访问键
只输入一个减号- ,创建分隔条
名称:设置Name属性
注:对分隔条,也需定义名称
索引(Index):用于菜单控件数组
快捷键 、 复选(Checked)
有效(Enabled)、 可见(Visible)返回目录5.6 菜单的设计与应用-使用菜单编辑器 5.6 菜单的设计与应用-使用菜单编辑器 2. 编辑菜单控件
返回目录 如果菜单控件的前面没有内缩符号“····”,表明该控件建立的是主菜单,否则为菜单命令或子菜单。 5.6 菜单的设计与应用-设计下拉菜单 5.6 菜单的设计与应用-设计下拉菜单 方法:先通过菜单编辑器设计菜单,然后编写各菜单控件的Click事件过程。
[例5.15] 创建简易编辑器
(1) 设计菜单
返回目录5.6 菜单的设计与应用-设计下拉菜单 5.6 菜单的设计与应用-设计下拉菜单 [例5.15] 创建简易编辑器
(2) 设计界面
菜单下面绘制两条直线(两个Line控件),一条为黑色,一条为白色。
黑线的Y1和Y2属性设为0
白线的Y1和Y2属性设为10
文本框Text1:
MultiLine设为True
ScrollBars设为3
(3) 编写菜单控件的Click事件过程返回目录5.6 菜单的设计与应用-设计弹出菜单 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.6 菜单的设计与应用-设计弹出菜单 [例5.16] 弹出菜单设计
(1) 打开例5.15所建立的工程
(2) 添加如下的事件过程:
Private Sub Text1_MouseDown(Button As Integer, Shift As Inte
本文档为【VB程序设计及数据库开发技术 (4)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。