作者:钱荣华,刘瑶(主编)
出版社:职业教育出版分社
格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT
VisualBasic程序设计实践教程试读:
前言
Visual Basic(简称VB)是一种由微软公司开发的包含协助开发环境的事件驱动编程语言,具有可视化的界面、简洁的语句、强大的功能以及易学易用的特点。近年来,高职院校普遍将“Visual Basic程序设计”列为必修课程。本书是《Visual Basic程序设计实用教程》(刘瑶 主编)的配套实验教材,在适度的基础知识和理论体系覆盖下,突出实用性和可操作性;本书着重知识点的总结、编程思路的训练以及上机实践环节的指导,从而达到较理想的教学效果。
本书共分两部分。第一部分实验指导按照知识体系结构分为9章,每章有若干个实验,每个实验采用“知识点讲解—实验指导—知识拓展与思考”的思路精心组织内容,每个实验题目的选定、编排次序、知识点的讲解及程序调试都是经过编者一再斟酌,反复研究和讨论的。针对实验题目,还给出了实验思考,以启发实验者。
第二部分为实训指导,由3 个综合实训构成:“简单计算器”是数组与选择结构程序设计的综合运用;“记事本”介绍了外部控件的引入及使用,综合运用菜单与文件的操作来实现实训任务;“考试系统”介绍了读取Excel 数据的方法,是程序控制结构及各种控件的综合运用。
本书适合作为高职高专院校相关专业的计算机教材,也可作为软件学院、计算机培训班的教材,还可作为计算机等级考试二级Visual Basic程序设计的培训教材和广大程序设计语言入门者的自学参考用书。
本书由钱荣华、刘瑶担任主编,刘三满、王睿、江兆银担任副主编。参与编写工作的还有朱勇、梅建东、肖艳群、薛景,扬州市职业大学信息工程学院孙华峰院长主审了全书,并提出了很多宝贵的修改意见。本书在编写和出版过程中,孙华峰、高晓蓉给予了大力支持与帮助,扬州市职业大学的各级领导和信息工程学院的老师也给予了支持和帮助,在此一并表示诚挚的感谢!
由于时间仓促,加之水平有限,书中难免存在错误和不妥之处,敬请广大读者批评指正。编者2010年4月第1章 Visual Basic概述实验一 认识Visual Basic环境
题目:创建一个有趣的“欢迎界面”。【实验目的】(1)熟悉Visual Basic(简称“VB”)的开发环境。(2)学习编写简单的VB 应用程序。【实验内容】(1)VB 集成环境的使用。(2)控件的基本操作。(3)编写简单的Windows 应用程序。【预备知识】
Visual Basic是一种面向对象的程序设计语言。在面向对象的程序设计中,把具有共性的程序和数据封装起来视为一个对象,每个对象都作为一个完整的独立组件出现在程序中。面向对象的程序设计主要将问题抽象成许多类,对象是类的实例,程序是由对象和针对对象进行操作的语句组成的。因此,类与对象是面向对象程序设计中最重要的概念。
1.对象与类的概念(1)对象。
对象(Object)是指可以独立存在的、可以被区分的,具有一定结构、属性和功能的实体,也可以是一些概念上的实体,是代码和数据的集合。在日常生活中,对象就是我们认识世界的基本单元,整个世界就是由各种各样的对象构成的,如一个人、一辆汽车、一个足球等。对象还可以包含其他对象,也就是说对象可以由多个子对象组成。例如,汽车就是由车身、车轮等子对象组成的;计算机就是由主机、显示器、键盘和鼠标等子对象组成的;整个世界都可以认为是一个非常复杂的对象。
VB 程序设计的基本单元是对象。整个应用程序就是一个对象,应用程序中还包含窗体、命令按钮、列表框等对象。(2)类。
类(Class)是对象的模板,是对一组具有共同属性特征和行为特征的对象的抽象。例如,由一个个大学生构成的“大学生”类,其中的每一个大学生是“大学生”类的一个对象。类在现实世界中并不真正存在。例如,在地球上并没有抽象的“人”,只有一个个具体的人,如张三、李四等。
2.创建VB 程序
创建VB 应用程序的第一步是创建窗体,这些窗体是程序运行的界面基础,控件是放置在窗体中的构成界面的具体对象,而代码则控制程序的运行过程。(1)创建窗体。
窗体界面如图1-1 所示。图1-1 窗体界面
窗体具有标准窗口的一切功能,可被移动和改变大小。窗体的标题栏用来显示窗体隶属的工程名和窗体名称。每个窗体必须有一个唯一的名称,建立窗体时默认的名称是Form1、Form2……在设计状态下,窗体是可见的。(2)控件添加。
① 在窗体中放置控件的方法有以下两种。
方法一:在工具箱中双击选定的控件。
方法二:在工具箱中单击选定的控件,拖动变成十字形的鼠标指针至合适大小,松开鼠标。
② 调整控件大小的方法有以下两种。
方法一:选中要调整的控件,将鼠标指针定位到控件周围的某个拖曳柄上,拖动该拖曳柄直到想要的大小为止,松开鼠标。
方法二:选中要调整的控件,用【Shift】+【↑】、【↓】、【←】、【→】调整控件大小。(3)对象的属性。
对象都有自已的属性。它们是用来描述和反映对象特征的参数。例如,窗体名称(Name)、标题(Caption)、颜色(Color)、字体(FontName)等都是属性。
对象属性设置的方法有以下两种。
方法一:在设计模式下,通过属性窗口直接设置对象的属性。
方法二:在程序的代码中通过赋值实现,其格式为:对象.属性=属性值。例如,Form1.Caption="显示"。(4)编写事件驱动程序。
VB 采用事件驱动机制,程序代码是针对某个对象事件编写的,每个事件对应一个事件过程。
① 代码窗口。
在代码窗口中输入和编辑过程。要输入过程中的代码,必须先打开代码窗口,可以用4种方式打开。
方式一:双击要编写代码的窗体或控件。
方式二:执行“视图”菜单中的“代码窗口”命令。
方式三:按F7 键。
方式四:单击“工程资源管理器”按钮,从窗口中选定窗体的名称,然后单击“查看代码”按钮。
② 编写代码。
进入事件过程后,可以编写或修改相应的事件过程代码。事件过程的表示格式如下。
Private Sub 窗口或控件名称_事件名称([形参表])
[程序段]
End Sub
3.几个常用控件(1)标签。
标签主要用来显示文本信息,它所显示的内容只能用Caption 属性来设置或修改。
标签常用属性如下。
① Autosize:自动调整标签大小。默认值是False,表示不自动调整标签大小。
② BorderSytle:设置标签的边框。默认值是0,表示标签无边框。
③ Caption:用来在标签中显示文本。标签中的文本只能用Caption 属性显示。
④ BackStyle:设置标签的背景是否透明。默认值是1,表示不透明。(2)文本框。
文本框是一个文本编辑区域,可以用来输入或输出文本。
文本框常用属性如下。
① Text:用来设置文本框中显示的内容。
② Locked:用来指定文本框是否可被编辑。默认值是False,表示可以编辑。
③ PasswordChar:用于口令输入。(3)命令按钮。
命令按钮用来在单击时执行指定的操作。
命令按钮常用属性如下。
① Caption:命令按钮标题。
② Enabled:用来激活或禁止对象。默认值是True,表示激活对象。
命令按钮常用事件是Click 事件,单击鼠标触发。(4)计时器。
可以每隔一个时间间隔触发一个计时器事件。
计时器常用属性如下。
① Enabled:决定计时器是否开始计时,默认值是True,表示计时器开始工作。
② Interval 属性:设置两个计时器事件之间的时间间隔,单位是ms。
计时器只有Timer 事件。对于一个含有计时器控件的窗体,每当经过一个Interval 指定的时间间隔,就触发一次Timer 事件。【实验步骤】
如图1-2 所示,在窗体中有一个显示“欢迎使用VB 程序设计软件”的标签,单击“动态显示”按钮时文字标签向右移动;单击“取消”按钮时文字标签停止移动;单击“退出”按钮时程序结束。
步骤如下。
1.创建界面
启动VB,新建窗体Form1,参考图1-3,向Form1 添加一个标签、3 个命令按钮和一个时钟控件。图1-2 运行界面图1-3 设计界面
2.设置对象属性
控件属性设置如表1-1 所示。表1-1 “欢迎界面”窗体及控件的属性设置
注意
为了程序界面的美观,可以通过“格式”菜单中的命令调整各个控件的大小、对齐方式等。
3.编写程序代码
双击按钮,调出代码窗口,在不同按钮的单击(Click)事件中编写不同的代码,具体事件过程的设计如下所示。(1)“动态显示”按钮的Click 过程。
Private Sub Command1_Click()
Timer1.Interval = 30 '每隔30ms 触发一次计时器事件
End Sub(2)“取消”按钮的Click 过程。
Private Sub Command2_Click()
Timer1.Enabled = False
End Sub(3)“退出”按钮的Click 过程。
Private Sub Command3_Click()
Unload Me
End Sub(4)时钟的事件过程。
Private Sub Timer1_Timer()
Label1.Move Label1.Left + 20 '标签框左边界向右移动
If Label1.Left > Form1.Width Then
Label1.Left = -Label1.Width '当标签框移出屏幕后,会从另一边出现
End If
End Sub
4.程序运行和调试(1)单击工具栏的“启动”按钮或者按F5 键运行程序,检查程序窗口中命令按钮是否可用。(2)单击“动态显示”按钮,检查文字标签是否向右移动。(3)单击“取消”按钮,检查文字标签是否停止移动。(4)单击“退出”按钮,检查是否退出程序运行。(5)如不满意,可单击“结束”按钮,进入设计模式重新修改。
5.程序改进
在任意时刻单击“动态显示”按钮,文字标签都会向右移动。在“动态显示”按钮的Click 过程中添加Timer1.Enabled = True 语句。
6.保存文件
程序设计完成后单击“文件”→“保存工程”命令,将窗体文件保存为Frm_1_1.frm,将工程文件保存为Prj_1_1.vbp。【知识拓展与思考】
1.若要使文字标签向左移动,该如何设计?
2.若单击“取消”按钮使文字标签从窗口中消失,该如何设计?【习题与思考】
一、选择题
1.VB 中工程文件的扩展名是( )。
A.frm B.vbp C.cls D.bas
2.确定窗体标题栏显示内容的属性是( )。
A.Name B.Text C.Caption D.Picture
3.为了设置窗体中的某个控件的属性,应使该控件变为活动的,则执行的操作是( )。
A.单击窗体 B.双击窗体 C.单击该控件 D.双击该控件
4.在下列有关Visual Basic 的叙述中,错误的是( )。
A.VB 是面向过程的程序设计语言 B.VB 采用了事件驱动的编程机制
C.VB 是面向对象的编程语言 D.VB 是可视化的程序设计语言
5.VB 开发环境中用于编写程序代码的窗口是( )。
A.工程资源管理器 B.属性窗口
C.工具栏 D.代码编辑器窗口
6.VB 提供控件的窗口是( )。
A.工具栏 B.文本框 C.工具箱 D.属性窗口
二、填空题
1.在保存VB 程序时,窗体文件的扩展名是______。
2.有如下程序代码:label1.caption=“VB 学习”,则label1、caption、“VB 学习”分别表示______、______、______。
3.在VB 中,一个工程中的对象通常指的是______和______。
4.在用VB 编程时,一般需要______、______和______3 个基本步骤。
5.给窗体加载背景图片,应使用属性窗口中的______属性。
三、编程题
在窗体上添加两个标签、两个文本框和两个命令按钮,把标签和命令按钮的标题分别设置为“输入口令”、“显示口令”、“显示”和“退出”。输入的口令在第一个文本框中不可见,以“*”代替;单击“显示”按钮时,口令在第二个文本框中出现;单击“退出”按钮时,程序结束运行。第2章 窗体和菜单设计实验一 窗体设计
题目:编写一个长度单位换算的程序。【实验目的】(1)掌握窗体的常用属性、事件和方法。(2)掌握标签控件的常用属性。(3)掌握文本框控件的常用属性、事件和方法。(4)掌握按钮控件的常用属性、事件和方法。(5)学会控件布局工具的使用。【实验内容】(1)创建主窗体并设置相关属性。(2)创建相关控件并进行合理布局。(3)给按钮编写响应事件代码。【预备知识】
窗体是Visual Basic 中的重要对象。窗体除了有自己的属性、事件和方法外,还可以作为其他控件的容器。窗体是一块“画布”,在窗体上可以直观地建立应用程序。编写Windows 应用程序实际就是设置窗体的属性并编写响应事件的代码。
标签、文本框和命令按钮是窗体中最常用的控件。标签主要用来标注和显示文本信息,而不能输入信息。可以用标签为文本框、列表框和组合框等控件添加描述性的文字。文本框在窗体中为用户提供一个既能显示文本又能编辑文本的区域,用户可以在该区域输入、编辑、修改和显示正文内容,即用户可以创建一个文本编辑器进行输入、删除、选择、复制、粘贴等各种操作。命令按钮的应用十分广泛,当用户选择单击某个命令按钮时就会发生相应的事件过程。单击不同的命令按钮将执行不同的操作,因此,命令按钮使程序的执行既简单又形象。
1.窗体的常用属性、事件和方法(1)窗体的常用属性。
Name:该属性用来定义对象的名称且适用于所有对象,在程序代码中用这个名称引用该对象。
Caption:该属性用来定义窗体的标题。标题内容最好能概括说明本窗体的作用。
Height 和Width:Height 属性用来指定窗体的高度,Width 属性用来指定窗体的宽度。
Left 和Top:Left 属性用于设置窗体的左边界与屏幕左边界的相对距离,Top 属性用于设置窗体的顶边界与屏幕顶边界的相对距离。
Enabled:设置对象是否能够对用户产生的事件做出反应。
Font:该属性设置窗体上显示文本的外观。由于窗体容器中的子控件默认继承窗体的Font 属性,所以可以用窗体的Font 属性快速设置窗体容器中的每一个子控件的Font 属性。(2)窗体的常用事件和方法。
Click 和DblClick:单击窗体触发Click 事件,双击窗体触发DblClick 事件。
Load 和Unload:程序运行后,把窗体装入工作区,就会自动触发窗体的Load 事件。关闭窗体或执行Unload 语句时,就会触发窗体的Unload 事件。
2.标签的常用属性
Caption:该属性用于设置标签要显示的内容。
Autosize:Autosize 属性为True 时自动调整大小,为False 时保持原设计时的大小,正文若太长会自动裁剪掉。
Alignment:该属性用来设置标题属性Caption 的对齐方式。
3.文本框的常用属性、事件和方法(1)文本框的常用属性。
Text:在文本框中显示的正文内容存放在该属性中。当文本内容发生改变时,Text 属性也会随之变化。
MaxLength:该属性用于限定文本框中可以输入的最大字符数。默认值为0,表示任意长度。
Multiline:该属性决定文本框是否接收多行文本。Multi Line 属性设置为True 时,文本框可接收多行文本,文本长度超过文本框宽度时,文本可以自动换行。MultiLine 属性设置为False 时,仅一行,默认值为False。
PasswordChar:该属性设置显示文本框中的替代符,一般以“*”显示。
Locked:该属性用来指定文本框中的内容是否可被修改,将Locked 属性设置为True,则禁止用户修改文本框中内容;默认值为False,表示可以编辑。
ScrollBars:该属性用于决定文本框中是否有滚动条。(2)文本框的常用事件和方法。
Change:当用户输入新内容或程序将Text 属性设置新值,从而改变文本框的Text 属性时会引发该事件。
KeyPress:当进行文本输入时,每一次键盘的输入都使控件在接收一个ASCII 码的同时触发KeyPress 事件。
LostFocus:该事件是在文本框失去焦点时触发的,焦点的丢失是由于用户按下制表键(Tab)时光标离开文本框或单击选择另一个对象操作的结果。
GotFocus:当文本框具有输入焦点时,触发该事件,使键盘上输入的每个字符都在该文本框中显示。
SetFocus:该方法可以把光标移到指定的文本框中。
4.按钮的常用属性、事件和方法(1)按钮的常用属性。
Caption:该属性表示按钮上显示的文字。如果在某字母前加“&”设置快捷键,则程序运行时按钮中的该字母带有下画线,当用户按下Alt+该快捷键时,便可激活并操作该按钮。
Default:Default 属性用于设置默认命令按钮。当Default 属性设置为True 时,则不管窗体上的哪个控件有焦点,按Enter 键都相当于用鼠标单击了该按钮。
Cancel:当Cancel 属性设置为True 时,则不管窗体上的哪个控件有焦点,按Esc 键都相当于用鼠标单击了该按钮。(2)按钮的常用事件。
当单击按钮时触发Click 事件。
5.控件的布局
为了程序界面的美观,当窗体中有多个控件时,通常要进行控件布局。VB 的“格式”菜单提供了多种布局的工具,这些工具可以帮我们快速对控件进行对齐、统一尺寸和调整间距。(1)选中控件。
在进行控件布局之前,要选中参与布局的控件。选择控件可以通过拖选的办法,也可以按住Ctrl 键不放,依次选择需要参与布局的控件。选中的控件中有一个控件是参照控件,该控件的拖曳柄呈填充色,可以通过鼠标单击来改变参照控件。(2)移动控件。
可以用鼠标直接拖动控件来移动控件的位置,但鼠标拖动控件不能进行精确定位;按住Ctrl 键不放,通过光标键可以精确移动控件,一次可以移动一个单位。(3)控件对齐。
选中要对齐的多个控件,单击作为参照标准的控件,在“格式”菜单的“对齐”子菜单中选择一个对齐的方式即可。(4)统一控件尺寸。
选中要统一尺寸的多个控件,单击作为参照标准的控件,在“格式”菜单的“统一尺寸”子菜单中选择一个统一尺寸的方式即可。(5)调整间距。
选中要调整间距的多个控件,在“格式”菜单的“水平间距”或“垂直间距”子菜单中选择一个调整间距的方式即可。
6.焦点和Tab 顺序
焦点决定了在任何时间由哪一个对象接收鼠标单击或键盘输入的信息。只有当对象具有焦点时,才可以具有接收鼠标单击或键盘输入的能力。在同一时间焦点只有一个,即处于激活状态,只有当所有控件都不具有焦点时,窗体才具有焦点。对于某些对象,是否具有焦点可以通过某些特征看出来。例如,当某个文本框具有焦点时,光标在该文本框中闪烁;当某个命令按钮具有焦点时,该按钮周围的边框突出显示。只有当一个对象的Enabled 和Visible属性均为True 时,它才能接收焦点。在程序运行时可以通过按Tab 键轮流切换焦点,也可以在代码中通过obj.SetFocus 方法使名称为“obj”的控件对象获得焦点。
当按下Tab 键时,焦点在窗体中各控件之间移动的顺序即为Tab 顺序。每个窗体都具有相应的Tab 键的顺序。在默认情况下,Tab 键的顺序与控件对象的建立顺序相同。对于不能接收焦点的控件对象、无效的和不可见的控件,以及TabStop 属性设为False 的对象,不会被包含在Tab 键顺序中。当按下Tab 键时,这些控件将自动跳过。【实验步骤】“长度单位换算”程序运行界面如图2-1 所示,在任意一个文本框中输入数值,单击后面的“换算”按钮,都会将输入的长度单位数值换算为另外一种单位数值并在相应的文本框中显示出来。图2-1 长度单位换算
步骤如下。
1.创建界面
启动VB,新建窗体Form1,参考图2-1 向Form1 中添加两个标签、两个文本框和3 个命令按钮控件,使用布局工具进行适当的界面布局。
2.设置对象属性
控件属性设置如表2-1 所示。表2-1 “长度单位换算”窗体及控件的属性设置
3.编写程序代码(1)Command1 按钮的Click 事件代码。
单击Command1 按钮时,会将以“米”为单位的长度数值换算为以“尺”为单位的长度数值,并在Text2 文本框中显示出来。米和尺的换算公式为:1 米=3 尺。代码如下。
Private Sub Command1_Click()
Text2.Text = Text1.Text * 3
End Sub(2)Command2 按钮的Click 事件代码。
单击Command2 按钮时,会将以“尺”为单位的长度数值换算为以“米”为单位的长度数值,并在Text1 文本框中显示出来。代码如下。
Private Sub Command2_Click()
Text1.Text = Text2.Text / 3
End Sub(3)Command3 按钮的Click 事件代码。
单击“退出”按钮时,程序立即关闭。代码如下。
Private Sub Command3_Click()
End //退出程序
End Sub
4.程序运行和测试(1)按F5 键运行程序,检查程序窗口中文本框与命令按钮是否可用。(2)向“米”文本框中输入数值1,单击其后的“换算”按钮,检查“尺”文本框的内容是否为3。(3)向“尺”文本框中输入数值6,单击其后的“换算”按钮,检查“米”文本框的内容是否为2。(4)单击“退出”按钮,检查程序是否会退出。
5.保存文件
单击“保存”按钮,将窗体文件保存为Frm_2_1.frm,将工程文件保存为Prj_2_1.vbp。【知识拓展与思考】
1.为了方便用户操作,当用户将焦点切换到输入框时,程序应自动将所有内容选中,以方便用户重新输入数值。如何实现?
分析与解答:当文本框获得焦点时,会触发文本框的GotFocus 事件,只要在该事件中设置文本框控件的SelStart 和SelLength 属性就可以实现选中所有文本的功能。
Text1 文本框的GotFocus 事件代码如下。
Private Sub Text1_GotFocus()
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End Sub
Text2 文本框的GotFocus 事件代码如下。
Private Sub Text2_GotFocus()
Text2.SelStart = 0
Text2.SelLength = Len(Text2.Text)
End Sub
代码中的Len 函数用于计算字符串的长度的函数。实验二 菜单设计
题目:编写一个有菜单的简易记事本程序。【实验目的】(1)掌握菜单设计器窗口的使用方法。(2)掌握下拉式菜单的设计。【实验内容】(1)创建记事本界面。(2)设计菜单项。(3)编写菜单项事件代码。【预备知识】
菜单是图形化界面中一个必不可少的组成元素。对于VB 应用程序来说,当操作比较简单时,一般通过控件来执行;而当要完成较复杂的操作时,使用菜单具有十分明显的优势。在VB 中,利用系统提供的菜单编辑器可以非常方便地建立下拉式菜单和弹出式菜单。
1.菜单编辑器
VB 6.0 中的菜单编辑器为帮助创建菜单提供了一个简洁明快的制作菜单的界面,如图2-2 所示。图2-2 “菜单编辑器”对话框
可以通过以下4 种方法打开“菜单编辑器”对话框。
选择“工具”→“菜单编辑器”命令。
使用快捷键Ctrl+E。
单击工具栏上的“菜单编辑器”按钮。
在要建立菜单的窗体上用鼠标右键单击,弹出一个快捷菜单,选择“菜单编辑器”命令。
在“菜单编辑器”对话框中可以指定菜单结构,设置菜单项的属性。该对话框分为3 个部分:数据区、编辑区、菜单项显示区。(1)数据区。
数据区位于窗口标题栏下面,共有5 行,用来输入、修改菜单项并设置其属性。其主要属性如下。
① 标题:用来输入所建立菜单的名称及菜单中每个菜单项的标题(即Caption 属性)。如果在菜单标题的某个字母前输入一个&字符,在窗体上显示时这个字母下面显示一个下画线,表示该字母是一个热键字母。热键是指使用Alt 键和菜单项标题中一个字母来打开菜单。如果在标题栏输入一个连字符“-”,则可在菜单中加入一条分隔线。利用这个办法将菜单项划分为一些逻辑组。
② 名称:用来输入菜单项的控制名,这个属性不会出现在屏幕上,在程序中用来引用该菜单项(即Name 属性)。
③ 索引:用来为建立的控件数组设置下标。
④ 快捷键:打开下拉式列表框并选择一个键时,菜单项标题的右边会显示快捷键名称。快捷键与热键类似,只是它不是用来打开菜单,而是直接执行相应菜单项的操作。
⑤ 复选:选择该项,可以在相应的菜单项旁加上指定的记号“√”,指明某个菜单项当前是否处于活动状态。
⑥ 有效:默认该属性为True,表示相应的菜单项可以对用户事件做出响应。若设置为False,则相应的菜单项会变“灰”,这时不响应用户事件(即Enable 属性)。
⑦ 可见:确定该菜单项是否可见。不可见的菜单项是不能被执行的(即Visible 属性)。(2)编辑区。
编辑区由7 个按钮组成,用来对输入的菜单项进行简单的编辑。菜单可在数据区输入,在菜单项显示区显示。
①:用于调整菜单项的级别,单击一次按钮,产生一个内缩符号“…”,表示为上一级的子菜单;单击一次按钮,删除一个内缩符号,该菜单项被提高一个级别。菜单项的级别最多可以设置6 级。
②:通过单击或按钮可将当前选择的菜单项在同级里向上或向下移动一个位置。
③ 下一个:建立下一个菜单项。
④ 插入:在选定的菜单项前插入一个空白菜单项。
⑤ 删除:删除选定的菜单项。(3)菜单项显示区。
菜单项显示区位于菜单编辑器的下部,显示输入的菜单项,并通过“…”标志表明菜单项的层次。条形光标所在的菜单项是当前菜单项。
2.下拉式菜单
下拉式菜单由一个主菜单和若干子菜单所组成。
菜单中的所有菜单项(包括分隔线)从本质上来说都是与命令按钮相似的控件,有属性、事件和方法。它们能响应Click 事件,为菜单项编写程序就是编写Click 事件过程。
3.弹出式菜单
右击对象时弹出的菜单为弹出式菜单,一般集合了很多常用的操作。弹出式菜单是显示在窗体上,独立于菜单栏的浮动式菜单,经常用于快速地在屏幕上显示若干菜单命令。(1)设计弹出式菜单。
与设计下拉式菜单一样,设计弹出式菜单也是使用菜单编辑器,将菜单(主菜单)的Visible 属性设置为False,即在菜单编辑器内不选中可见框,只显示它的下拉菜单项。因此弹出式菜单没有主菜单名,只有在使用时才会在窗体上浮动显示。(2)显示弹出式菜单。
VB 中的PopupMenu 方法就是用来显示弹出式菜单的,只要菜单至少包含一个菜单项,就可以显示出这个弹出式菜单。调用PopupMenu 方法的格式如下。
<对象名>.PopupMenu 菜单名[,标志参数[,X[,Y]]]
其中,菜单名是必需的,其他参数是可选的。X、Y 参数指定弹出式菜单显示的位置。标志参数用于进一步定义弹出式菜单的位置和性能,其可设置为表2-2 中的值。表2-2 标志参数描述
可以同时选择位置值和性能值,将其用“Or”运算符组合。
一般在对象的MouseUp 事件里编写对应的代码。【实验步骤】“简易记事本”的运行界面如图2-3 所示。可以通过“字体”菜单下的命令改变编辑框的字体名称和字体大小,字体名称有“宋体”和“黑体”,字体大小有“大字”和“小字”,大字为32 号,小字为16 号。图2-3 简易记事本
步骤如下。
1.创建界面
启动VB,新建窗体Form1,参考图2-3 向Form1 添加一个文本框控件。
2.设计对象属性
控件属性设置如表2-3 所示。表2-3 “简易记事本”窗体及控件的属性设置
3.设计菜单
打开“菜单编辑器”对话框,参见表2-4,对每一个菜单项输入标题、名称并选择相应的快捷键。表2-4 简易记事本的菜单项及其属性设置
续表
4.编写程序代码(1)Form1 窗体的Load 事件代码。
程序运行后,把窗体装入工作区,就会自动触发窗体的Load 事件,此时窗体界面并没有显示出来,窗体的Load 事件代码中通常会做一些程序初始化的操作,如为变量赋初值和改变控件状态等。窗体的Load 事件中有以下几个初始化任务。
① 初始化Text1 控件的位置和大小。
记事本程序中要求文本框要填满整个窗体区域,在设计时很难控制文本框刚好填满窗体,通过Text1 控件的Move 方法可以很容易做到这一点,代码为Text1.Move 0, 0,form1.ScaleWidth, form1.ScaleHeight,前两个参数相当于设置Text1 控件的Top 和Left 属性,后两个参数相当于设置Text1 控件的Width 和Height 属性。form1.ScaleWidth 和form1.ScaleHeight 是Form1 窗体的可见区域的宽度和高度。
② 初始化Text1 控件的字体名称和字体大小。
程序启动后,将Text1 控件的字体名称设置为“宋体”,字体大小设置为小字体(16 号)。
③ 初始化菜单项的状态。
当程序启动后,“编辑”菜单下的“粘贴”菜单项应该是无效状态,因为程序刚刚启动后没有内容可以粘贴,通过设置菜单项的Enable 属性为False 即可实现无效状态。
程序启动后,要将“宋体”菜单项和“小字”菜单项前面的复选标记打开,以表示当前Text1 控件的字体名称为宋体,字体大小为小字。
编辑框默认的对齐方式为左对齐,因此也要将“左对齐”菜单项前面的复选标记打开。
代码如下。
Private Sub Form_Load()
Text1.Move 0, 0, form1.ScaleWidth, form1.ScaleHeight
Text1.FontSize = 16
Text1.FontName = "宋体"
mnu_past.Enabled = False
mnu_songti.Checked = True
mnu_small.Checked = True
mnu_left.Checked = True
End Sub(2)“剪切”菜单项的Click 事件代码。
单击“剪切”菜单项,在文本框中将选中的文本删除,并将删除的文本保存到窗体级全局变量str 中,以便用于粘贴。因为现在已经有了可以粘贴的文本,所以要将“粘贴”菜单项的状态设置为有效,代码如下。
Private Sub mnu_cut_Click()
str = Text1.SelText
Text1.SelText = ""
mnu_past.Enabled = True
End Sub(3)“拷贝”菜单项的Click 事件代码。
单击“拷贝”菜单项,并将选中的文本保存到窗体级全局变量str 中,然后将“粘贴”菜单项的状态设置为有效,代码如下。
Private Sub mnu_copy_Click()
str = Text1.SelText
mnu_past.Enabled = True
End Sub(4)“粘贴”菜单项的Click 事件代码。
单击“粘贴”菜单项,将在编辑框的光标处插入str 变量中的文本,代码如下。
Private Sub mnu_past_Click()
Text1.SelText = str
End Sub(5)“退出”菜单项的Click 事件代码。
单击“退出”菜单项,程序将退出,代码如下。
Private Sub mnu_exit_Click()
End
End Sub(6)“宋体”菜单项的Click 事件代码。
单击“宋体”菜单项,将编辑框的文字字体设置为宋体,同时激活“宋体”菜单项前面的复选标记,清除其他字体名称菜单项前面的复选标记,代码如下。
Private Sub mnu_songti_Click()
Text1.FontName = "宋体"
mnu_songti.Checked = True
mnu_heiti.Checked = False
End Sub(7)“黑体”菜单项的Click 事件代码。“黑体”菜单项与“宋体”菜单项的功能相似,代码如下。
Private Sub mnu_heiti_Click()
Text1.FontName = "黑体"
mnu_songti.Checked = False
mnu_heiti.Checked = True
End Sub(8)“小字”菜单项的Click 事件代码。
单击“小字”菜单项,将编辑框的文字字体大小设置为16 号,同时激活“小字”菜单项前面的复选标记,清除其他字体大小菜单项前面的复选标记,代码如下。
Private Sub mnu_small_Click()
Text1.FontSize = 16
mnu_small.Checked = True
mnu_big.Checked = False
End Sub(9)“大字”菜单项的Click 事件代码“大字”菜单项与“小字”菜单项的功能相似,代码如下。
Private Sub mnu_big_Click()
Text1.FontSize = 32
mnu_small.Checked = False
mnu_big.Checked = True
End Sub(10)“左对齐”菜单项的Click 事件代码。
代码如下。
Private Sub mnu_left_Click()
Text1.Alignment = 0 '将Text1 文本框的对齐方式设置为左对齐
mnu_left.Checked = True
mnu_center.Checked = False
mnu_right.Checked = False
End Sub(11)“居中对齐”菜单项的Click 事件代码。
代码如下。
Private Sub mnu_center_Click()
Text1.Alignment = 2 '将Text1 文本框的对齐方式设置为居中对齐
mnu_left.Checked = False
mnu_center.Checked = True
mnu_right.Checked = False
End Sub(12)“右对齐”菜单项的Click 事件代码。
代码如下。
Private Sub mnu_right_Click()
Text1.Alignment = 1 '将Text1 文本框的对齐方式设置为右对齐
mnu_left.Checked = False
mnu_center.Checked = False
mnu_right.Checked = True
End Sub
5.程序运行和测试
按F5 键运行程序,检查各菜单项是否可用,并查看执行菜单命令后的效果是否正确。
6.保存文件
单击“保存”按钮,将窗体文件保存为Frm_2_2.frm,将工程文件保存为Prj_2_2.vbp。【拓展与思考】
1.程序运行时,如果改变程序边框的大小会出现什么情况?如何解决?
分析与解答:改变程序窗体大小时,编辑框的大小固定不变,程序的美观性受到影响。如果改变程序窗体大小时,编辑框的大小也能随着改变,就可以解决问题。当改变程序窗体大小时会触发窗体的Resize 事件,只要在窗体的Resize 事件中重新设置Text1 文本框的大小即可,代码如下。
Private Sub Form_Resize()
Text1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
End Sub
2.为了方便用户操作,通常将常用的菜单命令放入弹出式菜单中。假设本实验中的程序要求将“字体”菜单下的所有菜单项作为弹出式菜单,程序如何设计?
分析与解答:通常通过单击鼠标右键弹出菜单,因此,本例中需要对Text1 文本框控件的MouseDown 事件进行编程,Button=2 表示单击鼠标右键,但是,当用户右键单击编辑框时,会自动弹出一个系统自带的弹出式菜单,这将影响用户自定义弹出式菜单的弹出。为了解决这个问题,在调用popupMenu 方法显示弹出式菜单前需要将Text1 文本框的Enable 属性设置为False,这样就可以禁止系统自带的弹出式菜单,在调用popupMenu 方法之后,再恢复Text1 文本框控件的Enable 属性为True。代码如下。
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
Text1.Enabled = False
PopupMenu mnu_font '弹出字体设置菜单
Text1.Enabled = True
End If
End Sub【习题与思考】
一、选择题
1.移动控件位置的组合键( )。
A.Shift+方向键 B.Alt+方向键
C.Ctrl+方向键 D.空格键+方向键
2.下列关于控件的叙述错误的是( )。
A.单击一次工具箱中的控件图标,只能在窗体上画出一个相应的控件
B.按住Ctrl 键后单击一次工具箱中的控件图标,可以在窗体上画出多个相同类型的控件
C.双击工具箱中的控件图标,所画控件的大小和位置是固定的
D.不使用工具箱中的控件工具,不可以在窗体上画出图形对象,但可以写入文字字符
3.复制当前控件到窗体左上角,应该使用的快捷键是( )。
A.执行Ctrl+V 后,再执行Ctrl+C
B.Ctrl+V
C.执行Ctrl+C 后,再执行Ctrl+V
D.Ctrl+C
4.为了清除窗体上的一个控件,下列操作正确的是( )。
A.选择(单击)要清除的控件,然后按回车键
B.按Esc 键
C.选择(单击)要清除的控件,然后按Del 键
D.按回车键
5.以下不能作为选中多个控件的方法的是( )。
A.按住Shift 键依次单击每个控件
B.按住Ctrl 键依次单击每个控件
C.使用鼠标在窗体上拖出一个方框,在框内的控件将所要选中的控件框起来
D.依次单击每个控件
6.在VB 开发环境中,通过( )改变窗体在屏幕中的位置。
A.“属性”窗口 B.“窗体布局”窗口
C.“监视”窗口 D.“数据视图”窗口
7.同时改变一个活动控件的高度和宽度,正确的操作是( )。
A.拖动控件4 个角上的某个小方块 B.只能拖动位于控件右下角的小方块
C.只能拖动位于控件左下角的小方块 D.不能改变控件的高度和宽度
8.双击工具箱中的图标按钮,就会在( )画出该控件。
A.在窗体中央 B.在光标所在位置
C.随机位置 D.上一次画的控件之后
9.按下快捷键( ),再用鼠标拖动可以微调控件的位置( )。
A.Ctrl+Shift B.Ctrl+空格键
C.Ctrl+方向键 D.Alt+空格键
二、填空题
1.调整控件位置有用鼠标拖动对象、Ctrl+方向键以及______、______等方法。
2.一般情况下,窗体编辑器并不显示在屏幕上,因此可选择______。
3.如果屏幕上没有“窗体布局窗口”,可选择______。
4.选中多个控件,可以按住Shift 键,然后单击每个控件来选择,还可以用______方法来选择。
5.“窗体布局窗口”客户区域的左上角代表桌面坐标的______。
6.调整控件位置一般用鼠标拖动和Ctrl+方向键的方法进行,这两种方法的移动都以______为单位。
三、判断题
1.在VB 中可以同时选多个控件。( )
2.如误删控件,则可以用Ctrl+Z 快捷键恢复。( )
3.对所有控件来说,调整其大小与位置都是很有必要的。( )
4.可以用程序代码在窗体上画控件。( )
5.窗体布局调整是决定程序运行时窗体在屏幕上出现的位置。( )
6.调整控件时,选中控件后,可以使用“格式”菜单进行布局调整。( )
四、编程题
参考系统自带的计算器程序,设计出程序的界面(包括菜单)。第3章 Visual Basic 编程基础实验一 数据类型与表达式、内部函数
题目:编写一个计算圆的周长和面积的程序。【实验目的】(1)掌握基本数据类型。(2)掌握变量的定义和使用。(3)掌握各种运算符和表达式的使用方法。(4)了解各种内部函数的使用方法。【实验内容】(1)创建主窗体并设置相关属性。(2)创建相关控件并进行合理布局。(3)给按钮编写响应事件代码。【预备知识】
1.基本数据类型
数据是程序的必要组成部分,也是程序处理的对象。为了更好地处理各种各样的数据,Visual Basic 定义了多种数据类型,主要有数值型、字符型、布尔型、日期型、变体型、对象型和用户自定义类型等。
2.标识符的命名规则
标识符包括变量、常量、类型、过程、函数以及其他对象的名字。
标识符的命名规则如下。(1)只能由字母、数字和下画线“_”组成。(2)第一个字符必须是英文字母,最后一个字符可以是类型说明符。(3)字符个数不得超过255 个。其中,窗体、控件和模块的标识符长度不能超过40 个字符。(4)不能用VB 保留字作标识符,但可以嵌入标识符中;同时,标识符也不能是末尾带有类型说明符的保留字。例如,Print 和Print$是非法的标识符,而Print_Number 是合法的标识符。(5)在同一个范围内名字必须是唯一的,如同一个过程、同一个窗体等。(6)VB 中不区分标识符中的大小写,如MYVAL、Myval、myval 都是指同一个标识符。
3.常量
数据在程序中总是以常量和变量两种形式出现。如果在程序运行过程中数据始终保持不变,则可以用常量来存储该数据,反之则用变量。变量在使用以前必须定义其类型,以便系统为其分配存储空间,不同的数据类型占用的存储空间是不一样的。
常量是在程序运行过程中其值保持不变的量,如数值、字符串等。在VB 中,常量可以分为一般常量和符号常量两种。(1)一般常量。
一般常量是在程序代码中直接给出的数据。根据常量的数据类型,一般常量有数值常量、字符常量、逻辑常量和日期常量。
① 数值常量:由十进制0~9 组成的数字序列。
八进制以&O开头,如&O21。
十六进制以&H开头,如&HFF、&H32F。8
单精度数如-6.25E8 表示 -6.25×10。-6
双精度数如7.878D-6 表示 7.878×10。
② 字符串常量:VB 字符串是由双引号括起来的一串字符。
不含任何字符(长度为0)的字符串称为空串
③ 逻辑常量:True、False。
④ 日期常量:日期型常量的表现形式有以下两种。
#mm/dd/yyyy hh:mm:ss#
"mm/dd/yyyy hh:mm:ss"
例如,#2011-10-23#。(2)符号常量。
符号常量是在程序中用符号表示的常量。符号常量分为两大类:一类是系统内部定义的符号常量,这类常量可以随时使用。例如,
Form1.BackColor = vbBlue 'vbBlue 是表示蓝色的内部常量
另一类常量是用户运用Const 语句定义的,这类常量必须先声明后使用。Const 语句的语法格式如下。
Const 常量名=表达式
为了代码的可读性,习惯上,符号常量名采用大写字母表示,例如:
Const PI=3.14
此时若需在程序中使用π,则可用常量PI 代替。
4.变量
取值可以改变的量称为变量。在VB 中用变量临时存储数值。变量有名字(用来引用变量所包含的值的词)和数据类型(确定变量能够存储的数据类型)。(1)变量的命名规则符合标识符的命名规则,有时为了提高程序的可读性,可在变量名之前加上一个约定的前缀,用于表示变量的数据类型。变量名约定前缀如表3-1 所示。表3-1 变量名约定的前缀(2)变量的声明。
变量的声明就是事先将变量通知程序,以便系统为其分配存储单元。声明变量的一般格式如下。
Declare 变量名 As 类型
其中,Declare 可以是Dim、Static、Public、Private;As 是关键字;“类型”可以是任何一种VB 数据类型。
在变量说明语句中除了可以用As 数据类型说明变量的数据类型外,也可以采用在变量名后加上一个类型符规定变量的类型。VB 规定的类型符如表3-2 所示。表3-2 VB类型符(3)变量的赋值。
任何变量在定义后都被系统初始化为一个确定的数据。不同类型的变量初始值不同,如数值型变量被初始化为0,字符串变量被初始化为空字符串,变体型变量被初始化为空值。
除了初始化操作外,用户也可以使用赋值语句给变量赋值。赋值语句的基本格式如下。
[Let] <变量名>=<表达式>
只有当表达式的类型与变量的数据类型兼容时,该表达式的值才可以赋给相应的变量或属性。不管表达式是什么类型,都可以赋给Variant(变体类型)变量。(4)变量的作用域。
根据变量的定义位置和所使用的变量定义语句的不同,VB 中的变量可以分为3 类,即局部(Local)变量、模块(Module)变量和全局(Public)变量,3 种变量的作用域如表3-3所示。表3-3 变量的作用域
5.运算符和表达式
运算是对数据进行加工的过程,描述不同运算的符号称为运算符,参与运算的数据称为操作数。
在VB 中,运算符有算术运算符、字符串运算符、关系运算符、逻辑运算符。
表达式用来表示某个求值规则,是用运算符和圆括号将常量、变量、函数和常数连接起来组成的有意义的式子。
每个表达式都有一个唯一的值作为表达式的值。根据运算符的不同,可以将表达式分为算术表达式、字符串表达式、关系表达式、逻辑表达式。
运算符的优先顺序(从高到低):函数→算术运算(乘方→取负→乘/除→整除→求余→加/减)→字符串运算符→关系运算符→逻辑运算符(Not→And→Or)。
乘方和负号相邻时,取负优先。例如,2 ^ -2 的结果是0.25,相当于2^(-2)。
6.内部函数
VB 中提供了大量的标准函数,用户在程序代码中可随时调用。这些函数有些是通用的,有些与某种操作有关,大体上可分为5 类:数学函数、字符串函数、日期/时间函数、测试函数、转换函数。函数的一般调用格式如下。
函数名( [参数表] )
常用内部函数如表3-4~表3-8 所示。表3-4 数学函数表3-5 字符串函数
续表表3-6 日期时间函数表3-7 测试函数
续表表3-8 转换函数
试读结束[说明:试读内容隐藏了图片]