![VB教材共十六章课件_第1页](http://file4.renrendoc.com/view/322074e53e1bf237a54c831e10eb8dd4/322074e53e1bf237a54c831e10eb8dd41.gif)
![VB教材共十六章课件_第2页](http://file4.renrendoc.com/view/322074e53e1bf237a54c831e10eb8dd4/322074e53e1bf237a54c831e10eb8dd42.gif)
![VB教材共十六章课件_第3页](http://file4.renrendoc.com/view/322074e53e1bf237a54c831e10eb8dd4/322074e53e1bf237a54c831e10eb8dd43.gif)
![VB教材共十六章课件_第4页](http://file4.renrendoc.com/view/322074e53e1bf237a54c831e10eb8dd4/322074e53e1bf237a54c831e10eb8dd44.gif)
![VB教材共十六章课件_第5页](http://file4.renrendoc.com/view/322074e53e1bf237a54c831e10eb8dd4/322074e53e1bf237a54c831e10eb8dd45.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章VisualBasic介绍
第二章用户界面设计
第三章编程的基础(含变量,常量,条件语句,循环语句,自定义变量,自定义过程,对象和类等基础)
第四章Windows95的新控件VisualBasic的输入输出
第五章VisualBasic的鼠标事件和绘图
第六章VisualBasic的数据库、报表、预览、打印
第七章从文件中存取资料
第八章发行应用程序
第九章使用WindowsAPI和用VisualBasic建立自己的屏幕保护程序
第十章创建ActiveX控件
第^—章ActiveX文档
第十二章用对象链接与嵌入(OLE)扩展VisualBasic
第十三章使用资源文件
第十四章用VisualBasic建立ActiveXDLL
第十五章用Winsock控件进行Internet通信
第十六章Web浏览控件
第一章VisualBasic介绍
§2窗体和命令钮介绍
一、窗体
窗体是Windows的基本组成部分,这也是为什么这个操作系统叫Windows的原因。它的主要属性除上面介绍的以
外,还包括:
1,Appearance属性
这个属性用来决定控件是否采用三维效果。
2,BorderStyle属性
这个属性决定了窗体的边框形式,共有6种属性值。改变窗体的BordrStyle属性后,窗体在屏幕上没有变化,它
只在运行时才变为你所要求的样子。
3,ControlBox属性
程序员用来决定是否采用控制框的属性,仅在程序运行时才有效。
4,Font属性
程序员可以改变该窗体上显示信息的字体,它控制着直接在窗体上打印的文本显示。
5,Icon属性
这个属性是用户经常要使用的一种属性。当用户的应用程序在工具条上最小化或在Windows桌面上变为一个独立
应用程序时,该属性决定将采用何种图标,窗体控制框里的图标也由它决定。为自己的窗体设置该属性时,要控制住
自己挑三拣四的冲动。
6,Visible属性
该属性决定窗体是否可见。错误地改变其值是很危险的,窗体会从眼前消失,这种莫名其妙的事情会使用户惊惶
失措,所以肩负重任的程序员一定要慎重哟!
7,WindowState属性
指定窗体在运行时的三种状态:正常、最小化、最大化。
二、窗体的主要事件
1,Load事件
这个事件发生在窗体被装入内存时,且发生在窗体出现在屏幕之前。窗体出现之前,VisualBasic会看一看Load
事件里有没有代码,如果有,那么它先执行这些代码,再让窗体出现在屏幕上。
2,Click事件,Dblclick事件
这两个事件在单击或双击窗体时发生。不过你单击窗体里的控件时,窗体的Click事件并不会发生,VisualBasic
会去看控件的Click事件里有没有代码。
3,Activate(活动事件)与Deactivate(非活动事件)
显示多个窗体时,可以从一个窗体切换到另一个窗体。每次激活一个窗体时,发生Activate事件,而前一个窗体
发生Deactivate事件。
三、窗体控制
1,装入或卸出窗体
要装入或卸出窗体,用Load或Unload语句。Load语句的语法如下:
LoadformName
而UnLoad语句的语法是:
UnLoadformName
FormName变量是要装入或卸出的窗体名。Load语句只是把窗体装入内存,并不显示出来,要显示窗体可以
使用窗体的Show方法。
2,显示或隐藏窗体
要显示窗体,用Show方法。若尚未装入内存则先装入再显示。它的语法如下:
formName.showmode
FormName变量是窗体名,可选变元mode为0(缺省值)时窗体为非模态,为1时窗体为模态。模态窗体完全占
有应用程序控制权,不允许切换到别的应用程序,除非关闭!而非模态窗体则反之。
同理,隐藏窗体用formName.hideo
四、命令钮
命令钮有两类:一类是简单的命令钮,一类是图形钮.图形钮常常成组地出现在屏幕的顶端,成为一些程序炫耀
自己贴近用户的标志。图形钮充分利用了图形用户界面的特征,而且比命令钮小,但它的缺点是用户必须知道图形钮
是什么意思,而且没有鼠标的用户恐怕用不了图形钮。命令钮也有Appearance、(Option、Font、Left、Visible之类的
属性。命令钮的最主要事件就是Click事件,它还有MouseDown和MouseUp等事件
§3建立菜单
一般Windows的菜单条包含File,Edit,Window和Help菜单标题。其它的菜单,程序员应将它们插在Edit和
Window菜单之间。在VisualBasic里,为了创建菜单,必须打开菜单编辑窗口。可以按下Ctrl+E键,也可以从Tools
菜单中选择MenuEditor项,或者单击VisualBasic主窗口的从左边数第六个图形钮。
一、给菜单命名
菜单标题和菜单命令也有Caption和Name属性,你设置了这两个属性就等于创建了菜单。于控件一样Caption是
屏幕上可见的,而Name则是一个抽象名称。别忘了在Caption里加入“&”以帮助没有鼠标的用户。
二、增加和删除菜单
在MenuEditor中部有三个命令钮分别是Next,Insert,DeleteJnsert可用来增加新的菜单。在这三个键下面的Caption
列表框里选中菜单项(这时它的底色就变成深蓝色),单击Insert键,VisualBasic将上一个增亮菜单下推并增亮一空
行,你就可以输入新菜单名和标题了。Delete键可用来删掉菜单。你选中要删掉的菜单,单击Delete键就可以删掉它
了。
三、移动菜单标题
有四种情况,向上移动,向下移动,向左缩排,向右缩排,这就是MenuEditor中间上下左右箭头的功能。选中某
一菜单标题,安上下箭头,则这个菜单将上下移动到你喜欢的位置上,这也决定了它在界面中的位置。如果你按左右
箭头,情况则有所不同。由于菜单是分级的,所以,如果它没有缩排,则它是一个菜单标题;如果它缩排一次,那么
它将变成一个菜单命令:如果缩排两次,那么它将成为一个子菜单命令。VisualBasic里你可以总共设计四层子菜单。
四、设置分离条
分离条是指在菜单中将命令分组的线。
奇怪的是,VisualBasic将分离条也看成一个菜单项,它也需要C叩tion和Name属性,而且它也有其它属性,分
离条与菜单项的区别是分离条的Caption属性必须是连字号即减号。也就是,当你设置了一个Caption属性为的
菜单项时,实际上你就设置了一个分离条,分离条的名字可以是barFilel之类,以表明分离条的位置。
身无标题一记事本
文件9稿辑②搜索⑤)帮助国)
新建®
打开(Q)...
保存(S)
另存为⑥…
—分离条
页面设置9...
一分离条
退出意)
五、菜单的各种简单属性
在MenuEditor里有许多确认框和一些正文框及一个下拉式的列表框,这些东西决定了菜单的各种属性。
1,Checked属性
这个属性值设置为真,将在菜单命令左边产生一个打勾的确认标志,你可以看看FileManager里的View菜单就可
以了解什么是确认标志了。
2,Enabled属性
各种各样的用户会产生千奇百怪的操作,在许多Edit菜单里都会有不同形式的让菜单命令模糊的情况。Enabled
属性就是用来做这件事的。Enabled属性为真,则菜单命令是清晰的,Enabled属性为假,则菜单命令是模糊的,这时
用户就不能选中这个菜单项了。
3,Visible属性
用户看见一个模糊的菜单而不能选的时候,有时会非常生气。所以,如果用户看不见这个菜单命令时,他也就不
会发无名之火了。如果把Visible属性设为假,则菜单根本不会出现在屏幕上。这样做比把Enabled属性设为假显得更
加干脆!
4,Index属性
可以生成菜单命令数组,用索引号区分开。例如向File菜单中添加一系列最近打开的文件名。添加菜单可用Load
方法。
以上属性可以在运行时设置,形成动态的菜单的情况.
例如:
mnuUndo.Enabled=False
mnuProperty.Visible=False
你还可以改变Caption等属性。
mnuUndo.Caption="Redo”
在对窗体,命令钮和菜单有所了解后,工具箱里的其它控件就更加容易理解了。下面这些控件的熟练运用,将使
你做出漂亮的界面。
六、生成弹出式菜单(或浮动菜单)
几乎每个Windows应用程序都提供弹出式菜单,用户可以右键单击窗体或控件取得这个菜单。弹出式菜单也属于
普通菜单,只是不固定在窗体上,而是可以在任何地方显示。
弹出式菜单用P阴upMenu方法调用。假设我们已经用MenuEditor生成了名为mnuedit的菜单,则可以在MouseUp
事件加入如下代码:
IfButton=2ThenPopupMenumnuedit
下面将用一个实例展示动态菜单和弹出式菜单。
左图表单显示了一个弹出式菜单,在表单的空白处右击鼠标就可得到。左图表单显示了一个动态菜单,单击Add
runtimeoption钮一下就会使菜单RuntimeMenu增加一项,而单击Removeruntimeoption钮一下就会使菜单Runtime
Menu减少一项。其源代码如下:
Dimrtmenu
PrivateSubcmdadd_Click()
rtmenu=rtmenu+1
Ifrtmenu=1Thenmnuoption(0).Caption=''RuntimeOption1'
Loadmnuoption(rtmenu)
mnuoption(rtmenu).Caption=''option#"&rtmenu
EndSub
PrivateSubcmdremove_Click()
Ifrtmenu=0Then
MsgBox"menuisempty1'
ExitSub
EndIf
Unloadmnuoption(rtmenu)
rtmenu=rtmenu-1
EndSub
PrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=2ThenPopupMenumnuedit
EndSub
§4框架,确认框和选项钮
一、确认框和选项钮就好比多项选择和单项选择,在考试时选择题总比简答题要好做,因为你可以用瞎蒙的策略。
用户界面设计的保持简单的原则使确认框和选项钮成为有用的框件。确认框和选项钮用于向程序输入信息。确认框选
中时会在小方框里打一个钩,菜单设计窗口里就有这种确认框的例子。
选项钮选中时会在小圆圈里点一个点。它们的主要属性除了Name,Caption等,还有:
1,Value属性
决定它们是否被选中的属性。
2,Alignment属性
决定它们的对齐方式。
二、有两道选择题或更多时,我们就必须对它们进行分组。这种分组需要借助框架控件。分组的方法是:
1,在工具箱里单击Frame控件;
2,在窗体里拖曳鼠标画出框架;
3,在工具箱里单击确认框或选项钮控件;
4,在框架里画确认框或选项钮;
5,把所需的确认框或选项钮都画好。
§5正文框和标签
正文框通常用于向计算机输入信息,而标签通常用于输出信息。正文框是一个十分重要的控件,因为由确认框和
选项钮向程序输入的信息毕竟只有少数的几条信息而已。标签和正文框的区别很小,标签可以看成是一个在运行时不
能修改正文的正文框。因此标签主要用于输出信息。标签是生活中不可缺少的部分,比如教室里的“团结,勤奋,严
谨,活泼”就是一个每天不得不面对的标签。
1,BorderStyle属性
决定了正文框和标签的边框形式。
2,正文框的Text属性和标签的Caption属性
这两个属性其实是一样的,它决定了用户在屏幕上看到的东西,只不过正文框的Text属性在运行时可以直接在正
文框里修改。
3,Alignment属性
这个属性决定正文或标题的排列方式。
4,正文框的Multiline属性
如果正文框里的字太多了,超过了正文框的宽度,那么计算机就在某个我们不知道的地方显示这行字,所以我们
要设置Multiline属性为True,这样正文框就有了字换行的能力。
5,正文框的PasswordChar属性
如果用户从事的是一种掌握大量金钱或机密的工作的话,那么他就需要对自己的工作遮遮掩掩,在VisualBasic里
你可以作一个口令正文框来实现这种遮掩。方法是:
(1)选中作为口令正文框的正文框。(它的周围出现八个小方块)
(2)按F4键打开属性窗口。
(3)设置Multiline属性为False»
(4)设置PasswordChar为用于掩盖的字符。(只能是一个字符,比如*号)
第三步使口令正文框只有一行,因为Multiline属性为True将使Password属性失效。VisualBasic认为口令不必太
长,因为太长的口令更加容易忘记。
6,正文框的Maxlength属性
为了防止一些古怪用户输入太多的废话,程序员有限制正文框正文长度的权力,这就是Maxlength属性。如果
Maxlength属性设置为零,那么正文框就只受计算机内存的限制了。
7,Label的AutoSize属性和Wordwrap属性
这两个属性在一起搭配使用总是让人混淆,以至于VisualBasic附带的示例程序里有一个程序里有这两个属性的例
子,它的路径通常是c:\vb\samples\controls\control.vbpo在VisualBasic里运行这个例子,选择Options菜单的Wordwrap
andAutoSize«AutoSize属性使标签自动地扩大缩小以适应标签的Caption属性,但是它只会水平伸展。Wordwrap属
性使标签具有字换行处理的能力。
为了使标签具有垂直伸展和字换行处理,必须设置它的AutoSize属性和Wordwrap属性同时为True,
AutoSize属性为False,Wordwrap属性为False时,若标签不够高而Caption太长时,Caption将被切割掉。
AutoSize属性为False,Wordwrap属性为True时,情况同上。
AutoSize属性为True,Wordwrap属性为False时,表示可以水平伸展,但只显示一行信息。
Locked属性
程序员可以阻止用户改变文本框的内容,用户只可以看文本而不能改变它。这是VisualBasic4.0的新功能。
§6图形框(PictureBox)和图象框(ImageBox)
PictureBox和ImageBox是用来把图形放入程序里的。PictureBox和ImageBox可以显示几种不同格式的图形。
Bitmap文件(.BMP或.DIB)、Icon文件(.ICO或.CUR)、Metafile图元文件(.WMF)、增强型图元文件(.EMF)、JEPG(.JPG)
及GIF(.GIF)文件。在VisualBasic里Microsoft大概送给了我们几百个上述前三类文件,它们的路径通常是:
c:\vb\bitmapsc:\vb\icons>c:\vb\metafile。它们的主要属性有:
1,设置PictureBox和ImageBox的Picture属性
(1)单击PictureBox或ImageBox。
(2)按F4键打开属性窗口。
(3)单击Picture属性。
(4)单击设置框右边的省略号,VisualBasic将显示LoadPicture对话框。
(5)选择用户需要的文件,单击0k键。
则VisualBasic将图形装入PictureBox或ImageBox。如果想在程序运行期间装入或删除图形,就需要用程序代码
来实现了。我们可以使用LoadPicture函数。例:
装入图形
imgMyHand.Picture=LoadPicture("c:\graphics\hand.bmp")
删除图形
imgMyHand.Picture=LoadPicture(u)
2,PictureBox和ImageBox的BorderStyle属性
如同正文框和标签-一样,你可以设计PictureBox和ImageBox的边框。
3,Stretch属性和AutoSize属性
ImageBox只有Stretch属性,而PictureBox只有AutoSize属性。
AuloSize属性设为True,则PictureBox改变自己的大小来适应其中的图形。
Stretch属性设为True,则ImageBox中的图形将改变自己的大小来适应外面的边框。
§7Line和Shape控件
总有一些除了装饰作用没有别的功能的东西。如Line和Shape控件。
1,Line和Shape的BorderColor属性
一般来说边界颜色是黑的,但你也可显示你喜爱的颜色。在属性窗口里单击BorderColor属性,再单击省略号,
VisualBasic将显示一块调色板,在调色板里选择你喜爱的颜色。
2,Line和Shape的BorderWidth属性
这个属性决定线的粗细。
3,Line和Shape的BorderStyle属性
这个属性决定线的轮廓。
4,Shape的FillStyle属性
在形状中我们可能更加喜欢实心的样子,这也可以做到。
我们己经了解了窗体,菜单,及十种不同的控件,这正是Windows的基本元素,再加上它们的各种属性,就可以
画出各式各样的用户界面了!
§6&§7总、结:Image、Shape和Line控件有时被称作轻量图形控件。它们需要较少的系统资源,因此比
PictureBox控件显示得快并且包含PictureBox中可用的属性、方法和事件的子集。每一个控件都适用于一个特定的
目的。
1、其它控件的容器:PictureBox2>Printing或graphics方法:PictureBox3、显示图片Image或PictureBox4、
控件显示简单图形元素:Shape或Line控件
第三章编程的基础
在我们设计完用户界面后,我们就将开始了编写指令代码的过程。这是一个相对枯燥但却是必须的过程。
§1VisualBasic编程概述
一、事件驱动应用程序
简单地说就是当事件发生时程序才工作,否则程序将等待事件的发生。在事件驱动程序中,用户的操作或系统事
件执行一个事件过程,这样,程序执行的顺序就由哪一个事件的发生决定,由用户的操作决定。就是用户管理,代码
响应。
二、事件过程
用户界面对事件响应的三个部分是:
1,窗体
2,控件
3,菜单
编写程序代码的通常过程是:
I,确定哪一个对象(窗体,控件或菜单)做出反应一一单击此对象选中它;
2,打开代码窗口一一简单的方法是按F7键或者双击对象;
3,找到响应的事件;
E工程1-Forml(Code)
▼||LoadZl
PrivateSubForm_Load0
EndSub
代码窗口的Object列表框可以选择对象,旁边的Proc列表框可以选择对象的事件。如果事件已经有了代码的话,
那么在Proc列表框里这个事件名用黑体显示。空的事件代码都由两行组成,如:
PrivateSubForm_Load()
I
EndSub
4,编写程序代码。
三、变量
程序总是要做三件事:
L得到数据;
2,处理数据;
3,输出数据。
在程序运行时、这些数据被储存在变量里,变量可理解为计算机内存条上的一个微观的东西。一旦关机,变量就
消失了。变量在VisualBasic里有两种类型:
1,程序员建立的变量;
2,对象的属性往往也看成变量。
变量必须满足:
I,字母开头;
2,不超过40个字;
3,只包括字母,数字,下划线;
4,不是保留字。
创建变量的方法:
1,用Dim语句说明它;
2,可以省略声明语句而用变量声明字符生成确定类型的变量。在程序执行时若要生成变量并指定数据类型,可加
入下表所示的变量声明字符后缀。
符号数据类型举例
$StringA$,messageText$
%IntegerCounter%,var%
&LongPopulation&,colorValue%
!SingleDistance!
#DoubleExactDistance#
3,把一个值赋给一个名称,VisualBasic就把这个名称看成变量。
Dini语句的语法是:
DimVariableNameAsType
例如:DimMyName
AsType部分可以省略,它涉及到我们将要讲的关于数据类型的问题。Dim语句的作用是声明变量并分配存储空
间。
赋值,语句的语法是:VariableName=Value或VariableName1=VariableName2
与数学中的等号意义不同,这里等号只表示把后者的值赋给前者,所以,A=A+1在VisualBasic里是合法
的。例如:cmdExit.Caption="Exit"(这是一个改变对象属性的例子)
四、数据类型
变量可以存放数字或字符串等东西,但是MyName变量并不需要存放数字,所以你可以限制存放的数据类型。你
可以规定MyName只能字符串。VisualBasic提供了七种数据类型:
I,整型(Integer)
2字节整数,标识符(同上面的变量声明字符)为百分号(%),范围从-32768到32767,运算很快。
2,长整型(Long)
4字节整数,标识符为&,范围从-2147483648到2147483647,运算很快。
3,单精度型(Single)
4字节浮点数,标识符为!,范围可达38位数字,前7位可靠,运算比整型和长整型慢。
4,双精度型(Double)
8字节浮点数,标识符为#,范围可达300多位,但是可靠的只有前16位数字。
5,字符串型(String)
标识符为$,在32位版本的VisualBasic4.0中,字符串可容纳高达200兆字节的内容。
6,货币型(Currency)
8字节定点数,标识符为@,小数点右边4位,左边15位。
7,日期型(Date)
用于存放日期,范围从#January1,100#到#December31,9999#,日期的格式取决于系统的设定,赋值方法是:New
=#January1,2000#。
8,字节型(Byte)
VisualBasic4.0新增加的数据类型,用于存放0到255的整数。
9,布尔型(Boolean)
只有True或Fake两个值。
10,变体型(Variant)
如果你不告诉VisualBasic你的变量是什么类型,VisualBasic就自动把它看成变体型。变体型的意思就是它没有
类型,或者是任何类型。如果声明了Variant变量而未赋值,则其值为Empty。
例如:DimMyNameAsString
事实上,语句DimMyName只是将MyName变量声明为变体类型罢了,因为变体类型是VisualBasic的缺省类型。
但是,我们使用数据类型的原因是什么呢?
I,使用最小的数据类型可节省内存;
2,程序员可以容易地找出每一变量所存放的数据类型;
3,可以防止数据类型存放错误引起的错误。
例如:
PrivateSubForm_Load()
DimMyNameAsString
MyName="DongShan”
EndSub
变换变量类型
有时需要将一种变量类型变成另一种变量类型,下表列出了进行变量类型转换的函数:
函数说明函数说明
Cbool将变元变成布尔值CLng将变元变成长整型值
Cbyte将变元变成字节值CSng将变元变成单精度值
CCur将变元变成货币型值CStr将变元变成字符串值
CDate将变元变成日期值Cvar将变元变成变体值
CDbl将变元变成双精度值CVErr将变元变成错误值
CInt将变元变成整型值
Val:将变量转成数值型,从左至右转,直到遇到第一个非数字为止。
Str:将变量转成字符型,会在最前保留一符号位,正号时前为空格。
Format:将按格式返回字符。StrConv:转换字符编码
例如要将如下的初始化变量:
DimAAsInteger
变成双精度值,可用下列函数:
B=CDbl(A)
用户自定义的数据类型……记录
保存多个相同或不同类型数值的结构称为记录(record)。
itVISUALBASIC中定义记录,用Type语句,其语法如下:
TypevarType
Variable1AsvarType
Variable2AsvarType
VariablenAsvarType
EndType
例如定义一个名为CheckRecord的记录:
TypeCheckRecord
CheckNumberasInteger
CheckDateasDate
CheckAmountasSingle
EndType
CheckRecord结构可以像普通变量类型一样使用。要定义这个类型的变量,使用如下语句:
DimcheckIAsCheckRecord
要对结构的各个字段访问,可使用如下语句:
check1.CheckNumber=123
check1.CheckDate=#08/l4/1996#
check1.CheckAmount=240.00
强制的变量声明
VisualBasic并不要求变量声明,但对于编写大型应用程序时,变量声明的确很有好处。
因此VisualBasic提供强制声明的方法,只要在窗体或模块的声明部分加上一条语句:
OptionExplicit
这个语句使编译器检查每个变量的声明,如果要用的变量没有声明,则发出一个错误消息!
数组
单个变量只能存放单个实体,而数组可以存放一组相关的数据。像变量一样,数组有名称,存放在数组中的数值
通过一个索引来访问。
数组的定义必须用Dim语句声明,如下:
DimNames(9)AsString'也可以不指定数据类型
Names是保存了10个元素的数组,Names(O)是第一个元素,Names(9)是最后一个元素。数组元素的赋值如下:
Names(0)="John"
Names(1)="Tom"
Names(9)="Xionghui"
数组的第一个元素的索引可以不是0,可以在Dim语句中指定下限:
DimNames(lTo16)
DimNames(5To16)
动态数组
有时可能不知道需要多大的数组,这时可以生成动态数组,其长度可以在运行程序时改变。定义动态数组,和
平常一样用Dim语句(或Private和Public),但不要指定长度(或维数):
DimDynArrayO
后面等能确定维数的时候,再用ReDim语句重新确定实际长度(或维数):
ReDimDynArray(UserCount)
ReDim语句只能出现在过程之中,它是可执行语句。
但每次执行ReDim语句,数组中原先存放的所有当前值会消失。但有时可能想改变数组的长度,而不损失
原有的数据,幸好VisualBasic提供了Preserve关键字,它就能作到!例如下面语句将数组加大一个元素而不改
变原有数据:
ReDimPreserveDynArray(Ubound(DynArray)+1)
由于ubound。函数只能返回静态数组或己经重定义上限的数组上标,否则将出错。所以我们常使用:
Dimarr()
Redimarr(O)
Redimpreservearr(ubound(arr)+l)
这样ubound。取得的上标即数组成员数,实际上是将arr(O)闲置,将有效的数组数据写入arr(l)之后的成员中。
清除数组
Erasearraylist,参数为数组列表,格式为array1,array2…,该语句清空并释放数组,一般用于动态数组。
五、变量的使用范围
VisualBasic的变量有三种使用范围。
1,局部变量;
2,模块级变量,也可以叫做窗体级变量,因为窗体和模块是同级的:
3,全局变量。Public
局部变量只存在于说明它的过程里,为说明一个局部变量,应在一个事件过程中说明。
模块级变量可存在于这个窗体或模块中,可以被所有窗体内的事件过程所引用和改变,说明模块级变量的方法是:
1,按F7键打开代码窗口;
2,在Object列表框中选择(general);
3,在Proc列表框里选择(declarations);
4,用Dim语句说明。
全局变量从程序开始时存在至程序结束,不过全局变量的错误也许会导致致命的错误,你不得不读遍程序来寻找
到底在说明地方改变了全局变量。创建全局变量的方法是:
1,从Insert菜单里选Module项,这个命令为一个BAS模块文件显示代码窗口;
2,在Object列表框中选择(general);
3,在Proc列表框中选择(declarations);
4,用Public语句说明全局变量。
六、算术,逻辑,比较运算符
1,算术运算
尽管一台上万元的计算机看来很高科技,但它在算术运算方面并不比一个几十元的计算器强多少。
运算符运算运算符运算
+加(也是字符串拼接)\整数除
-减(也是取负值)Mod取余数
*乘A乘方
/浮点数除&字符串拼接
2,逻辑运算
逻辑运算是对True和False进行操作的运算。VisualBasic将True的值看成-1,将False的值看成0。
运算符使用意义
And变量1And变量2两个量均为True,才返回True
Or变量1Ch■变量2只要有一个量为T「优,返回值就为True
Xor变量IXor变量2两个量一个为True,一个为False才返回True
Not变量1Not变量2简单地把True变为False,把False变为True
3,比较运算
比较运算是比较两个数或字符串的大小。
运算符意义运算符意义
<小于>=大于等于
<=小于等于=等于
>大于<>不等于
说明:变体型变量必须使用VarType(Var)判断其是否为空,如返回1则为空。
有时候,复杂的运算会把我们搞晕,良好的习惯是加括号。如:x=(5*(8+9)J2,则计算机先处理(8+9),
再处理(5*(8+9)),最后才是乘方。再如:x=(5*6)/2,这个括号加得似乎没什么意义,但它使我们清晰地知道
是从哪儿开始运算的。
七、字符串操作
有时程序需要对字符串进行操作,比如从一个文件的完整路径名中找出文件的名称。下面介绍几个常用的函数。
I,Len函数
返回字符串的长度。如Length=Len("string"),则Length=6。
2,LCase函数,UCase函数
LCase函数把字符串变为小写字母。UCase函数把字符串变为大写字母。如:
x=LCase("DONGSHAN")
x=UCase(''visualBasic")
3,Left函数,Right函数
语法是:
Left(VariableName,N)
Right(VariableName,N)
Left函数从字符串的左边提出N个字符。Right函数从字符串的右边提出N个字符。
4,Mid函数
语法是:
x=Mid(VariableName,n,m)
Mid函数从VariableName字符串的第n个字符开始取出m个字符。
5,Instr函数
语法是:
Instr(VariableName1,VariableName?)
Instr函数从VariableName1里找出VariableName2的位置。如:x=Instr("ABCD","CD"),此时x=3。如果计算
机没找到要找的字符串,则这个函数返回0。
6,LTrim函数,RTrim函数,Trim函数
LTrim函数将去掉字符串前的空格。
RTrim函数将去掉字符串后的空格。
Trim函数将去掉字符串前后的空格。如:x=RTrim("John"),此时x="John”。
7,Vai函数
语法是:
x=Vai(VariableName)
这个函数将字符串里的数字字符串转化为数字。如:Y=Vai(“123”),则Y=123。
当VisualBasic发现下一个字符不是数字时就停止继续转化。
8,Str函数
与Vai函数相反,Str函数将数字转化为字符串。
语法是:
x=Str(VariableName)
八、常量及注释
1,使用常量
如果我们编一个程序从每笔收入中拿出40%用于饭卡的消耗,则在程序中我们会总是用到0.4这个数字。这时粮
食涨价了,我们不得不把0.4全都改成0.5,这就显得非常麻烦。我们本可以定义并使用一个常量为0.4,在涨价时把
它小小调整一下就可以了。常量命名的要求与变量一样。常量的使用范围也与变量一样,分为:局部常量(在过程里
用Const说明)、模块级常量(在窗体,模块的声明区用Const说明)、全局常量(在模块的声明区用PublicConst
说明)
2,使用注释
用注释。如:4ThisSubisusedtogetWindowsversion
撇号右边的东西VisualBasic通常用绿色的字来显示,而且VisualBasic将忽略注释的东西。在VisualBasic4.0所
附的示例程序里使用了大量的注释,这样使其他人(也包括自己)能更好地读懂程序,所以使用注释是一个好习惯。
注释的忽略性也有一些小用处,如:
x=(3.5A2-4)*(5+6.73*7\2)-10.89
现在你需要测试这一语句是否是必要的,于是你把它删除,再运行看是否能得出正确的答案,如果它是不必要的,
那就很顺利,如果它是必要的,你就不得不痛苦地再输入一遍而且还有输错的可能。现在你可以选择把它注释掉,这
样程序运行将忽略它的存在,也可达到上面测试的目的。
§2VisualBasic的语句
一、条件选择语句
1,条件式
条件式必然代表一个值,是真(True)或者是假(Fake)计算机可以检测出这个值以做出相应的行动。下面就是
判断的例子,其中加下划线的部分就是指条件式。
IfLove=TrueThen...
与之相同的简略的形式是:
IfLoveThen...
而IfLove=FalseThen...与IfNotLoveThen...的意义是相同的。
条件式中可加入逻辑运算符,如:
Ifx<20Andx>15Then表示当15vx<20程序将做什么。
Ifx<15Orx>2QThen表示当x<15或x>20时程序将做什么。
2,If-Then语句
语法是:
IfConditionThenInstruction
例如:Ifn>25ThentxtABC.Text="ABC”
3,If・Then-EndIf语句
IfConditionThen
Instruction1
Instruction2
EndIf
这种结构可指示计算机执行一串语句。
4,If-Then-Else语句
IfConditionThen
Instructions1
Else
Instructions2
EndIf
这种结构指示计算机在条件不成立时应该做的事,这样保证了计算机至少执行一些语句。
5,If-Then-ElseIf语句
IfCondition1Then
Instructions1
ElselfCondition2Then
Instructions2
ElselfCondition3Then
Instructions3
Else
Instructions4
EndIf
类似这样的完整的语句可做出多次判断,又保证计算机至少执行一些代码。
6,SelectCase-case...case.«.endselect语句
被选择的值为许多定值时,这个语句就更有用一些。
SelectCaseVariableName/object
CaseValue1,可以是变量值或对象名
Instructions1
CaseValue2
Instructions2
Caseelse,除上述情况外的其他情况
Instructions3
EndSelect
7,嵌套结构
我们可以把许多各式各样的条件语句嵌套在一起,而且这种嵌套在理论上没有限制。但事实上嵌套使用得越少,
代码就越容易被理解。在嵌套时最好使用便于观察的缩排的格式。如:
SelectCaseGrade
Case“95”
IfClass=n3r'Then
Dorm=H1106-1108n
ElseIfClass=u33MThen
Dorm="1104-1105*,
EndIf
EndSelect
7,选择函数
Hf(expression„)根据表达式逻辑值,返回两个参数中的一个
Choose(expression,„...)根据表达式整数值,返回多个参数中的对应位置的那个。
二、循环语句
计算机擅长反复地做一件事,循环语句将发挥它的这种优势。
LDo-Loop循环
Do-Loop循环基本上是一个死循环,所以需要在循环时判断一些条件。
(1)DoWhile循环(当Condition条件为真时执行循环)。
DoWhileCondition
Instructions
Loop
While也可以放在Loop语句上。
(2)Do-LoopWhile循环(先执行一次程序体,再判断条件为真则继续执行循环)。
Do
Instructions
LoopWhileCondition
这两种循环的不同之处是:DoWhile循环先判断条件,所以,DoWhile循环可能-一次都不执行。DoLoopWhile
循环先执行指令,再判断循环条件。所以DoLoopWhile循环至少执行一次指令。但它们都是当一定条件为真时的循
环。
(3)DoUntil循环(条件为真即“退出”循环)。
DoUntilCondition
Instructions
Loop
DoUntil先判断条件,所以循环可能一次都不执行,它是当一定条件为假时的循环。
DoUntil等同于:
DoWhileNotCondition
Instructions
Loop
(4)Do-LoopUntil循环(执行程序体,直到条件为真时退出)。
Do
Instructions
LoopUntilCondition
DoLoopUntil先执行指令再判断循环条件,所以指令至少被执行一次。D。LoopUntil是当一定条件为假时的循
环。
2,计数的循环For-Next
(I)For-Next循环必须有一个控制变量,这个控制变量一般为整型。语法是:
ForCounter=StartToEnd
Instructions
NextCounter
这里的Counter就是控制变量。如果想运行5次,可用下面的循环:
Fori=1To5
Instructions
Nexti
这时,每循环一次,i的值就加1。
(2)向前向后计数
ForCounter=StartToEndStepIncrement
Instructions
NextCounter
Increment表明每次循环控制变量所加的值。如下面代码也可循环5次:
Fori=5To1Step-1
Instructions
Nexti
只有当Counter<=End时循环才执行,当Counter>End的时候循环就不执行了。所以
Fori=1To10Step7
Instructions
Nexti
循环将执行两次,一次是当i=l时,一次是当i=8时。
最好不要在循环内改变控制变量的值,这样往往会导致逻辑上的错误。
(3)对象的计次循环
Foreachelementingroupnext,针对一个数组或集合中的每个元素,重复执行一组语句。
可参见Csdn中Foreach.…next语句或Printer对象与Printers集合。
3,与条件语句一样,循环语句也可以嵌套。如:
DoWhileCondition
Fori=1To5
Instructions
Nexti
Loop
循环总是先从内部开始的。比较:
Fori=1To4Fori=1To4
Fori=1To5Fori=1To5
NexliNexLi
Nextj
是允许的这种For-Next的缠绕是不允许的
4,从循环中快速退出
通过使用命令ExitDo和ExitFor,我们可以在循环未结束前跳出循环。但我们应该保证所需的动作完成后再跳
出来,否则也许会遇到新的错误。而且不要试图用Goto语句从循环外跳入循环。
下面的代码可以检测出3至20之间的质数。其中使用了循环的嵌套及条件语句,并且当发现i不是质数时立即
用ExitFor转向对下一个数的检测。
SubForm_Click()
Dimi,j,xAsInteger
Fori=3To20
x=False
Forj=2Toi-1
If(iModj)=0ThenExitFor
Ifj=i-IThenx=True
Nextj
IfxThenPrinti
Nexti
EndSub
5,遍历对象(如:所有打印机、窗体等)
使用ForEachobjectIncollection语句来遍历集合中的对象
(1)、遍历所有窗体
'MDI窗体Load事件中无法列出子窗体,因为它们还没加载。
'判断是否mdi子窗体只能看name属性,因为MDI窗体没有Mdichild属性
,方法一(遍历含MDI窗体)
DimfrmAsvb.Form
ForEachfrmInForms
Debug.Printfrm.Caption
Next
,方法二(遍历含MDI窗体)
Dimi
Fori=Forms.Count-1To1Step-1
Debug.PrintForms(i).Caption
Next
(2)、遍历打印机(VBMSDN自带例程)
DimXAsPrinter
ForEachXInPrinters
IfX.Orientation=vbPRORPortraitThen
'设定为系统缺省打印机。
SetPrinter=X
'终止查找打印机。
ExitFor
EndIf
Next
三、建立过程与函数
如同常量的定义一样,有时不仅仅是几个数字反复出现在程序中,而且是很多段代码在做几乎同样的事,如果有
一些通用的代码可供调用的话,那么程序就会简练得多,而且更为清晰,这就是过程与函数。过程和函数保存在FRM
文件和BAS文件里。若一个过程保存在BAS文件里,那么这个过程可供程序里所有的代码调用;如果一个过程保存
在FRM文件里,那么这个过程只能被本窗体里的代码调用到。创建过程或函数的简单方法是选择Insert菜单的
Procedure项。过程名,函数名的命名规则与变量名,常量名的命名规则一样。
1,过程结构
Subsubname(argumentlist)
Instructions
EndSub
argumentlist指的是参数列表,所谓参数,就是指过程操作所需的指导条件。如下面过程:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年专利知识产权技术权利许可转让合同
- 装修工期延长合同
- 节能环保技术与设备采购合同
- 2024年电动汽车充电设施建设项目合同
- 企业数据加密技术采购合同
- 办公室花卉租赁合同
- 餐饮业食品安全及卫生管理免责合同
- 车体车身广告合同协议
- 2024年餐饮连锁加盟合同
- 二零二五版宠物领养与宠物繁殖管理合同3篇
- 知识图谱智慧树知到答案2024年浙江大学
- 2024年度-美团新骑手入门培训
- 驾照体检表完整版本
- 高一数学寒假讲义(新人教A专用)【复习】第05讲 三角函数(学生卷)
- 农村高中思想政治课时政教育研究的中期报告
- 医院定岗定编方案文档
- 4-熔化焊与热切割作业基础知识(一)
- 2023年200MW储能电站储能系统设计方案
- 个人安全与社会责任的基本知识概述
- 简易劳务合同电子版
- 明代文学绪论
评论
0/150
提交评论