VBII版理论与实验主要改动部分ML.docx
《VBII版理论与实验主要改动部分ML.docx》由会员分享,可在线阅读,更多相关《VBII版理论与实验主要改动部分ML.docx(17页珍藏版)》请在冰豆网上搜索。
![VBII版理论与实验主要改动部分ML.docx](https://file1.bdocx.com/fileroot1/2022-11/20/fc3cc68a-7be3-4e38-8377-6f3737cfc46b/fc3cc68a-7be3-4e38-8377-6f3737cfc46b1.gif)
VBII版理论与实验主要改动部分ML
第2、6章实验修改题目及其理论相关部分
一、目录
vbs2-2简单的数字校验程序
vbs2-3掌握Print和Cls方法的语法格式,并正确使用Print方法中Tab()、Spc()、“,”和“;”的用法(vbs2-3所有关的理论部分的修改:
3、窗体的方法)
vbs2-4在窗体上装载背景图片,制作并移动具有浮雕效果的文字(图片)。
vbs2-5文本框、标签、按钮综合应用实例
vbs6-3参看教材上例6.7,完成个进度条的简单应用程序
vbs6-5参看教材上例6.7,完成一个进度条的简单应用程序。
2.4.3VisualBasic工程打开、保存等操作的常见问题
2版理论教材第2章正文
2版实验教材2、6、8、9正文
说明:
若使用实验教材上的实验,建议vbs2-2、2-3、2-5、6-3均给出代码(之前所给教学资源已经附我所写实验的电子版,或者由实验参考答案中复制代码给学生。
尤其是第二章是为了让学生了解VB在实际生活中应用,并不要求他们掌握复杂的代码,只要求在第2章中掌握基本的属性设置和了解窗体、按钮、标签和文本框一些事件在程序中的作用)
二、题目
实验2-2简单的数字校验程序。
程序运行初始界面如图2.2。
【要求】
(1)在“输入密码(1位阿拉伯数字)”对应的文本框中输入合法字符(1位阿拉伯数字)时,则会出现如图2.3所示的运行界面。
否则,将出现如图2.4的界面。
(2)完成后以“*vbs2-2.frm”和“*vbs2-2.vbp”为文件名保存在指定的硬盘位置。
图2.2实验2.2初始运行界面图2.3输入符合规定字符时的界面
图2.4输入错误字符时的运行界面
【提示】
本题的目标有2个:
一是掌握建立VB简单程序的6大基本步骤,详细步骤及其说明见表2.1。
表2.1建立VB程序的6大基本步骤
详细步骤
说明
(1)启动VB,建立新工程
若之前有打开的VB工程,需要对其先保存。
(2)建立用户界面的对象
根据图2.2,标签3个,文本框2个。
(3)设置对象的属性
设置窗体、标签和文本框的Name、caption、text等属性。
(4)对象事件过程的编程
详见参考代码部分
(5)保存文件
将frm和.vbp文件保存到相应位置。
(6)程序的运行(和调试)
在“运行”模式下观察程序执行结果。
二是掌握标签和文本框控件的基本属性设置,详细步骤及其说明见表2.2。
表2.2实验2.2的属性设置
控件
Name
Text
locked
Max
length
Caption
其它属性
窗体
Form1
-
-
-
文本框的应用:
简单的数字校验程序
无
标签
Label1
-
-
-
设置帐户密码
Aligment=2-Center
Label2
输入密码(1位阿拉伯数字)
无
Label3
-
-
-
显示校验结果
无
文本框
txtKey1
空白
False
1
-
Password=”*”
txtJy
空白
True
0
-
Multiline=True
Scrollbars=2
参考代码如下:
PrivateSubForm_Load()
txtKey1=""
txtKey2=""
txtJy=""
EndSub
PrivateSubtxtKey1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii>48AndKeyAscii<57Then'限制输入字符在0-9以内
txtJy="输入成功!
"
Else
txtJy="请输入0-9之间的阿拉伯数字"
txtKey1=""
txtKey1.SetFocus
EndIf
EndSub
【注意】
在编写VB程序时,除要输入汉字和特定符号外,其他的程序代码必须在英文状态下输入。
使用者要注意一些符号的区别,如双引号(””和"")等。
实验2-3掌握Print和Cls方法的语法格式,并正确使用Print方法中Tab()、Spc()、“,”和“;”的用法。
编写程序实现如图2.5所示的效果。
【要求】
(1)当分别单击“显示”和“清屏”出现如图2.5所示的效果;
图2.5print方法的格式及其使用
(2)要求窗体不可改变大小
【提示】
代码参考理论教材例2.3。
实验2-4在窗体上装载背景图片,制作并移动具有浮雕效果的文字(图片)。
初始运行界面如图2.6示。
【要求】
(1)在窗体上显示背景图片(可以任意选择图片);
(2)窗体上以浮雕效果显示的字符串“自‘移’自乐”;
(3)当每次单击左指向和右指向命令按钮(以图标形式显示)时,字符串对应向左或向右移动100个Twip单位。
图2.6实验2.4的初始运行界面
(4)(选做1):
连续移动。
两个标签从原位置左移或右移,当超出窗口的左边界或右边界时,还要继续以原有的移动规律(方向和大小)移动。
(5)(选做2):
移动方向改成上下移动;当然,左指向和右指向命令按钮要改成上下指向图标,如图2.7示。
(6)(选做3):
移动对象改成图片,将自己喜欢的图片制作成具有简单移动效果的手动小动画。
如图2.8示。
图2.7按钮图标为上下指向图2.8移动对象改成图片
【提示】
本题的目标:
掌握在控件上装载图片(窗体装载图片、按钮上显示图标和图像框上装载图片文件)、标签浮雕效果的实现和控件的移动。
(1)命令按钮上显示的图片(即左指向和右指向文件Point02.ico和Point04.ico)一般保存在C:
\ProgramFiles\MicrosoftVisualStudio\Common\Graphics\Icons\Arrows\目录下,可以选择类型为.ico或.bmp等的任意图片作为命令按钮的背景图片。
(2)浮雕效果是通过两个标签的错位及色差来实现的,具体属性设置参考主教材例2.6。
(3)标签等控件的移动可以利用Move方法,也可以使用设置属性的方法实现。
详见主教材的例2.5的说明。
注意移动时要让两个标签同步进行,这样才能确保浮雕效果不变。
(4)选做1:
要实现连续移动,就需要改动部分代码,此处以label1向左移为例:
PrivateSubCommand1_Click()
If(Label1.Left+label1.width)<0Then'当label1左移使得整个标签超过窗体左边界时
Label1.Left=Form1.Width'将label1定位到窗体的最右边
Else'当label1左移未超出窗体左边界时
Label1.MoveLabel1.Left–100'label1每次左移100个单位
EndIf
EndSub
(5)选做2:
代码部分只需把移动对象的Left和Width属性改成Top和Height即可。
上指向文件Point05.ico和下指向文件Point03.ico的文件位置与Point02.ico相同。
(6)选做3:
若将移动的标签改为图片,需增加一个图片控件Picture或Image(因为直接装载在窗体上的图片无法达到移动的效果,图片控件的添加参看主教材的例2.5),在代码部分只需要将移动对象label1改成装载的图片名称即可。
如要制作成自动的移动效果的动画,需要增加一个时钟控件,具体参见实验6.4。
【注意】
(1)Style属性值设置为1后,才能使得在Picture属性中选择的图片可见。
(2)对象的没有Right和Bottom属性。
(3)图片的装载路径可以用“绝对路径”或“App.path+相对路径”来实现。
要熟练掌握这两种路径的使用。
实验2-5文本框、标签、按钮综合应用实例。
【要求】
运行初始界面如图2.9(标注部分为控件名)。
txtKey1
txtJy
txtKey2
cmdOk
cmdRetry
图2.9实验2.5的初始运行界面
(1)在文本框“txtKey1”、和“txtKey1”内只能输入6位的数字字符,且均以“*”代替。
文本框“txtJy”只能显示内容不可输入。
(2)当在文本框“txtKey1”、和“txtKey1”内一输入非数字字符时,将会出现图2.10的界面。
(3)2次输入相同6位合法字符且单击“确定”后的界面,如图2.11所示。
图2.10一输入错误字符时的界面图2.112次输入相同6位合法字符且“确定”后的界面
(4)2次输入不同的6位合法字符且单击“确定”后的界面,如图2.12所示。
(5)单击“重设密码”按钮后清空所有文本框。
图2.12第2次输入字符与第1次不同时的界面
【提示】
(1)本实验是实验2.2的拓展。
此处在txtKey1_Change事件中使用IsNumeric()函数,对txtKey1文本框内是否输入合法字符进行判断。
(2)不需编写txtKey2事件。
只要在cmdOK_Click事件中,以txtKey2.Text=txtKey1.Text条件来限制第2次输入密码与第1次相同即可。
参考代码如下:
PrivateSubcmdOK_Click()
IftxtKey2.Text=txtKey1.TextThen
TxtJy="设置帐户密码成功!
"
Else
txtJy="请输入与第一次输入密码相同的数字"
txtKey2=""
txtKey2.SetFocus
EndIf
EndSub
实验6-3参看教材上例6.7,完成一个进度条的简单应用程序。
【要求】
掌握进度条常用的属性设置和常用的事件。
【要求】
掌握滚动条常用的属性设置和常用的事件。
实验6-7参看教材上例6.7,完成一个进度条的简单应用程序。
【要求】
掌握进度条常用的属性设置和常用的事件。
3.窗体的方法
窗体常用的方法有Circle、cls、Hide、Line、move、print和Show等。
此处仅介绍最常用的cls、move和print方法(详见表2.8)。
表2.8窗体常用的方法及其说明
方法名
说明
Cls
清除由其它方法在窗体中显示的文本和图形,用法:
[对象名.]Cls
Move
使对象移动,同时也可以改变被移动对象的尺寸,用法:
[对象名.]Move左边距[,上边距[,宽度[,高度]]]
Print
在窗体上显示文字,也可以在打印机上输出,
用法:
[对象名.]Print{[Spc(n)│Tab(n)]}[表达式列表][;│,]
(1)Print方法
Print方法的作用是在窗体等对象上输出信息。
形式如下:
[对象名.]Print{[Spc(n)│Tab(n)]}[表达式列表][;│,]
我们可以将此句分解成支持print方法的对象、定位和打印内容这3部分来理解:
[对象.]print[定位][打印内容列表(可以有多个)]
具体说明如下:
第一,支持Print方法的对象有:
窗体、图形框或打印机。
省略时为当前窗体。
第二,定位是由Spc()或Tab()两种函数来决定,前者为相对定位,决定两个打印字符或表达式间隔;后者为绝对定位,以对象左边界为基准位,当Tab(n)中参数n小于当前位置的值则换行。
第三,打印内容为单个或多个表达式,表达式可以包括单个或多个常数、变量;单个表达式之后或多个表达式之间均可以选择使用“;”与“,”,两者之间的区别在于:
前者决定下一个打印内容的紧跟前一个打印内容,后者决定下一个打印内容从下一个打印区(每隔14列)开始。
补充说明:
1表达式列表开始打印的位置是由对象的CurrentX和CurrentY属性决定的,缺省为打印对象的左上角0和0。
2当窗体的AutoRedraw属性为默认的False值时,Print方法在Form_Load事件过程中是不起作用。
Print语句非常实用,而且灵活多变,初学者需要多加练习方可熟练掌握。
print语句常用的书写格式以一个实例来说明:
例2.3用Print方法输出图形。
程序运行界面见图2.7,程序代码如下:
Dimx%,y%'声明两个整型变量x,y
'以实例说明print语句常用的8种形式
PrivateSubForm_Click()
x=2:
y=3'x,y的初值
Print'第1种:
只用print(没有其他参数)打印空行,起到换行作用
Printx'第2种:
直接输出单个变量结果
Print"--------------------------------------"'第3种:
输出单个某种特定符号结果
Printx;'对此句效果本行是与第2句的“printx”相同
Printy'因上一句最末有“;”使得本句的打印内容紧跟着上行内容
Print"x="&x'第4种:
用“&”连接输出单个常量和变量
Print"x="&x,"y=";y,"x"&x&"<"&y'第5种:
用“&”、“;”和“,”连接输出多个常量和变量
PrintTab(4);"x="&x,Tab(4);"y="&y'第6种:
用Tab函数定位输出多个常量和变量结果
PrintSpc(4);"x="&x,Spc(4);"y="&y'第7种:
用spc函数定位输出多个常量和变量结果
PrintTab(4);String(1,"☆");Spc(10);String(4,"☆")'第8种:
用多个print语句组合完成输出一定规律图形
PrintTab(3);String(2,"☆");Spc(10);String(3,"☆")
PrintTab
(2);String(3,"☆");Spc(10);String(2,"☆")
PrintTab
(1);String(4,"☆");Spc(10);String(1,"☆")
EndSub
图2.7例2.3运行界面
注意:
11行print语句中只能有1个print,但打印内容可以有多个,且从屏幕的左往右显示。
2通常情况下,有n个print语句就应显示n行,但有2种情况除外:
第1种情况如在例2.3中,第4和第5行print最终只显示1行效果(详见该两行的注释);第2种情况如在例2.3中,第8行print最终显示2行结果,因为第2个Tab函数的参数“4”不大于第1个Tab函数的参数造成换行。
3实际上,第8种形式通常应该运用第4章的循环结构来简化。
4String(1,"☆")中的特殊符号“☆”,可以右击中文输入法图标上的“键盘”,选择弹出的快捷菜单上的“特殊符号”后找到。
2.4.1VB工程的打开、保存等操作常见问题
在实际的操作过程中,对于VB工程的打开和保存等操作,初学者往往会出现很多问题。
1.打开文件时出现的常见错误
正确打开工程的方法是双击.vbp文件,则该VB工程所有相关的文件都会自动打开。
如果直接打开窗体文件(.frm),尤其是对于多窗体或有标准模块文件的VB工程,运行时往往得不到预期的效果。
初学者在打开工程时出现常见的错误及其原因分析,见表2.21:
表2.21打开文件时常见的错误类型及其原因分析
序号
错误类型
系统提示
原因分析
1
可打开工程文件,但无法加载窗体
如图2.27所示
保存时未按要求保存窗体文件
窗体文件名改名后,无法运行工程文件
窗体文件或工程文件位置改变后,无法运行工程文件
2
无启动窗体
如图2.28所示
在单窗体工程中,保存工程出错
在多个窗体的工程中,未设置启动窗体
3
打开窗体文件,无法运行预期效果
无
一个工程文件中含有多窗体
2.27文件未找到的系统提示图2.28无启动窗体的系统提示
当打开工程文件出现如表2.21所示错误时,其根本原因是因为保存操作出现问题引起的:
一般都是因为窗体文件重命名或移动位置后,工程文件无法更新而出现找不到原本对应的窗体文件的错误。
正确的保存操作有两大原则:
一是保存次序:
先保存窗体文件(.frm)、模块文件(.cls)等文件,最后才是工程文件(.vbp);二是保存位置:
VB工程所需的所有文件必须保存在同一位置下;
初学者一般的错误保存操作详见表2..22。
表2.22初学者常见的错误保存操作及其解决方法
情况
错误操作
解决方法
文件名出错
首次保存时.frm文件或.vbp以外的其它文件文件名不符合要求
进行“另存为”操作
仅有*.vbp名出现错误
将其重命名即可
文件间的关联改变
对已经正确保存的.vbp文件以外的文件(如.frm文件)重命名
进行“另存为”操作或改变文件间错误关联
首次保存时.vbp文件与其它文件(如.frm文件)不再同一位置
对已经正确保存的.vbp文件与其之外的文件(如.frm文件)移动位置
在多个窗体的工程中,未设置启动窗体
打开工程,设置启动窗体后保存.vbp文件
解决方法的主要思路有两种:
一是按照正确保存操作两大原则进行“另存为”操作;二是纠正.vbp文件与其之外的文件(如.frm文件)的错误关联。
以例2.7中vbj2-7frm和vbj2-7.vbp文件为例,来说明具体的3种操作方法。
方法1,“另存为”操作的方法:
对于仅有1个窗体的工程,从窗体文件(*.frm)打开并运行该工程→按正确的保存方法,重新保存工程(依次选择“文件”菜单下的“Form1另存为”和“工程另存为”命令,在“文件另存为”和“工程另存为”对话框中确保文件名字和位置正确无误)即可→删除错误文件名或错误位置上的文件;
对于含有多个窗体的工程就必须从工程文件(*.vbp)打开工程→设置其启动窗体→重新保存工程文件.vbp即可。
设置其启动窗体的操作为:
选择“工程”菜单下的“工程属性”的命令,在弹出的“工程属性”对话框中“启动对象”列表框中选择启动窗体,如图2.29所示。
图2.29工程属性“通用”选项卡
方法2,打开工程添加窗体的方法:
将工程所有相关的文件(如*.vbp、*.frm等)移动到同一目录下→使用“工程”菜单“添加窗体”命令→在“添加窗体”对话框的“现存”选项卡中将该工程对应的.frm文件重新加入到.vbp文件中即可。
方法3,使用记事本改变文件间关联的方法:
将*.frm文件或.vbp以外的其它文件的文件名重命名→右击vbp文件,以文本文件形式打开(在弹出的快捷菜单中选择“打开方式”的下级命令“选择程序”),如图2.30所示→改动对应文件名,如图2.32所示,“Form=Form1.frm”改为“Form=vbj2-1.frm”,即可改变工程文件与窗体文件的联系。
→保存并关闭如图2.31所示的对话框即可。
图2.30“打开方式”对话框图2.31在记事本程序中打开“工程1.vbp”文件
2.其他注意事项
除了第之前章节提到在新建、打开和保存工程时的注意事项外,还需注意以下几点:
(1)工程中.frm和.vbp以外的文件的保存
在VB中,一个工程包括如表2.18所示的各种类型的文件,因此,工程的保存也包括工程文件(.vbp)、窗体文件(.frm)等相关文件的保存。
保存工程的详细步骤见2.4.2部分。
除了之前提到的注意事项外,还需注意以下两点:
第一,凡是涉及到保存工程文件的,一定要同时保存与工程有关的修改过的窗体或标准模块等文件。
如例2.8这类简单的工程,只需保存一个窗体文件和一个工程文件,但在实际的程序设计中,将会用到多个窗体或标准模块文件等。
第二,对于在几个工程文件间共享的某个单个窗体或模块文件(.frm或.bas),当在某个工程中对该文件对应的窗体或模块进行改变,将会影响到共享该模块的所有工程。
(2)窗体名与窗体文件名的区别
前者是窗体的Name属性,是在代码中引用该窗体唯一识别符号,要求在同一工程中不能存在2个相同的窗体名;
后者是存放在磁盘上的文件名(*.frm),包含该窗体所有控件属性和代码,要求同一文件夹内不能存在2个相同的文件名。
在工程中添加*.frm时,若当前工程的窗体名与添加窗体名相同,系统会提示“名称已使用”的出错信息,不能添加。
必须使用其它名字才可添加。
(3)在工程中添加文件与添加文件的复制件的区别
前者的操作是将该现存文件添加到工程中,当在工程中对该文件修改并保存时,这个更改会影响到包含此文件的其他任何工程。
如果想改变该文件又不影响其它工程,应添加文件的复制件而非文件本身,即将已有的文件复制成规定的文件名,在将此复制文件添加到当前工程中,对复制文件的改变不会影响到其他工程。
(4)从工程中移除文件与在工程之外删除文件的区别
前者的操作仅从工程中移除文件,在保存工程时,VB会自动更新此工程文件中相应信息,但此文件仍保存在磁盘上。
后者操作将不会使VB自动更新此工程文件,因此,当打开此工程时,将会显示一个错误信息,警告一个文件丢失。