第2章-Visual-Basic语言基础知识ppt课件(全)_第1页
第2章-Visual-Basic语言基础知识ppt课件(全)_第2页
第2章-Visual-Basic语言基础知识ppt课件(全)_第3页
第2章-Visual-Basic语言基础知识ppt课件(全)_第4页
第2章-Visual-Basic语言基础知识ppt课件(全)_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章VisualBasic语言基础知识

数据是VB应用程序的重要组成部分,在存储和处理数据时涉及到的有关数据类型、常量和变量、内部函数、表达式、基本输入输出语句等基础知识是VB程序设计的基础。本章将介绍这方面的内容,为以后VB的学习打下必备的语言基础。

【主要内容】

●数据类型、常量和变量

●VB常用函数、表达式

●赋值语句、Print方法和输入输出函数

●程序模块和变量的作用域2.1引例

【引例】编写程序,用来查询距离放假还有多少天。要求:程序运行后,单击窗体,输入放假日期,然后在窗体上显示当天日期、放假日期和距离放假的天数等信息。可通过键盘输入函数提供数据输入界面,将键盘输入的日期和系统日期的差值作为结果值显示在窗体上。2.2数据类型

VB中的每一个数据都属于一种特定的数据类型,不同的数据类型,在内存中所占的存储空间各不相同,表示和处理的方法也不尽相同。在程序设计中,要随时注意所用数据的类型。VB的数据类型分为系统定义和自定义两种。系统定义的数据类型称为标准数据类型,是由系统提供,不需要定义就能直接使用;而自定义数据类型需要以其它数据类型为基础,按照一定的语法规则来创建,它必须先定义(创建),后使用。VB的标准数据类型包括:

1字符串型(String)字符串型数据是指一切可打印的字符和字符串,是用双引号(“”)括起来的一个字符序列。例如:“ASD”、“123”、“请输入本学期的放假日期:”均是字符串。在VisualBasic中,字符串数据类型可分为变长和定长两种,变长字符串的长度不确定,是可变的;定长字符串的长度是固定不变的。说明:①“”表示空字符串,而“”表示空格字符串。②一般情况下,一个西文字符占一个字符,一个汉字或全角字符占两个字节。而在VB6.0以后的版本中,一个西文字符和一个汉字均占两个字节。2数值型(Numeric)

在VisualBasic中,数值型数据是指能够进行加、减、乘、除、整除、乘方和取模等算术运算的数据,它包括整数和实数。(1)整型数:不含小数点和指数符号的数。▲整型(Integer)如:123%,-123,在内存中占2个字节。▲长整型(Long)如:123&,在内存中占4个字节。▲字节型(Byte)Byte数据类型实际是一个字节的无符号整数,所以不能表示负数,所能表示的数据的范围是:0~255。(2)实型数实型数是带有符号、小数部分和指数部分的数值,包括:▲单精度型(Single)在内存中占4个字节,范围为–231~231-1。▲双精度型(Double)在内存中占8个字节,范围–263~263-1。

3货币型(Currency)专门为表示货币而设置的一种数据类型。在内存中占8个字节,精确到小数点后面4位,小数点前有15位。4逻辑型(Boolean)

若变量的值只是“true/false”、“yes/no”、“on/off”信息,则可将它声明为逻辑类型。逻辑型数据的缺省值为False。5日期型(Date)日期型数据用语表示日期和时间,在内存中占8个字节。日期范围:100年1月1日~9999年12月31日,时间从0:00:00~23:59:59。日期型数据必须以#或双引号“”括起来,如:#January1,1993#、#12/31/92#和“12-31-92”都是合法的日期型数据,如不合法,系统会给出提示信息。6对象型(Object)对象型(Object)数据存储的是32位(4个字节)的地址,该地址引用应用程序中的对象,通常用来表示图形、OLE对象或其它对象。7变体型(Variant)变体数据类型是一种可变的数据类型,又称为万用型数据类型,是一种特殊的、可以表示所有系统定义的数据类型。变体数据类型对数据的处理可以根据上下文的变化而变化,为VB的数据处理增加了智能型。变体型数据可以表示任何类型的数据,包括数值型、字符串型、日期型等。

VB中的标准数据类型数据类型类型符前缀占字节数范围整型(Integer)%Int2-32768~32767长整型(LongInteger)&Lng4-2147438648~2147438647字节型(Byte)无byte10~255单精度浮点型(Single)!Sng4-3.402823E38~-1.401298E-451.401298E-45~3.402823E38双精度浮点型(Double)#Dbl8-1.79769313486232E308~-4.94065645841247E-3244.94065645841247E-324~1.79769313486232E308货币型(Currency)@Cur8-922337203685477.5808~9223372036854775807字符串型(String)变长$Str10+串长0~大约20亿定长串长1~大约65535字节逻辑型(Boolean)无Bln2True或False日期时间型(Date)无Dtm8100年1月1日~9999年12月31日变体型(Variant)数字无Vnt16任何数字值,最大可达到Double的范围字符22+串长与变长String有相同的范围对象型(Object)无Obj4可供任何对象引用2.3常量和变量

VB中存在着两种表征数据的形式:常量和变量。常量表示在程序运行期间其值不可被改变的量,它用来表示数据的值;变量不但可以表示数据的值,也可以用来存放数据,每一个变量都对应着一个存储单元,在程序运行期间其值可以发生改变。

2.3.1常量和变量命名规则

VB6.0中,常量和变量的命名规则如下:⑴只能由字母,数字和下划线组成,且第一个字符必须是字母。⑵长度不得超过255个字符。⑶不能是VB的关键字。⑷不能包含小数点。⑸VB中不区分变量名的大小写,例如TCT,tct,Tct等都认为是同一个变量名。⑹变量名不能与过程名、符号常量名相同,最好使用缩写前缀,以区分变量类型。为了增加程序的可读性,变量名最好具有实际意义,简单明了,不要太长。以下常量和变量名非法:

5xy‘不允许以数字开头X.y'不允许出现小数点End‘不允许是关键字X+y'不允许出现加号

2.3.2常量

常量指在程序运行过程中,其值保持不变的量。在VisualBasic中,常量可分为直接常量和符号常量两种。1直接常量直接常量就是在程序中,以直接明显的形式给出数据本身的数值。根据数据类型,直接常量有数值常量、字符串常量、逻辑常量和日期常量。(1)字符串常量:是用双引号括起来的字符序列。如“AAAA”。(2)数值常量:如678,31.96,4.8E-2等。(3)逻辑常量:如False。(4)日期常量:如#1999-10-2310:25#。2符号常量有些值在程序中会多次使用,如果在每次使用时都重复输入,即浪费时间又容易出错,同时,如果要改变此直接常量的值,就需要改动程序中的许多地方,既麻烦又容易遗漏。这时,可以用一个容易理解和记忆的符号来表示该常量,在程序中,凡出现该常量的地方,都用此符号代替,把这样的符号称为符号常量,如用MAX表示最大值,MIN表示最小值等。符号常量使用前须声明。符号常量的声明格式:Const常量名[As类型名]=表达式若省略类型名,则由表达式的类型决定。'Pi为单精度型常量ConstMAXAsInteger=9'Max为整型常量ConstYDATE=#1/1/95#'YDATE为日期型常量ConstPNAME="LiYan"'PNAME为字符型常量如果用逗号进行分隔,则在一行中可放置多个常数声明,如:

2.3.3变量

在程序的执行过程中,其值可以发生改变的量称为变量。变量看作是一个被命名的存储单元,不同类型的变量在内存中占用的存储单元不同。在默认状态下,VB中可以不进行变量声明,此时变量类型默认为变体类型(Variant),但这样做可能由于变量名的误写而产生不良后果,所以变量应先声明后使用。变量声明后,系统会根据变量类型,为它分配相应的存储空间,并确定该空间可存储的数据类型。

1变量的显式声明

显示声明变量可以使用Dim,Static,Public,Private这四个关键字。这一节介绍用关键字Dim来声明变量,其它关键字在本章的后续小节中介绍。Dim语句的语法格式如下:Dim变量名[as数据类型]说明:⑴方括号里的内容可以省略。如省略,则该变量被声明为变体型(Variant)。如:DimintCount'intCount声明为变体变量

⑵可以使用连续声明方式,将多个变量放在一行中一次声明,用逗号隔开,但类型声明不能共用,每个变量必须有自己的类型声明。如:DimintSum﹐intAve'intSum,intAve都声明为变体变量DimintM﹐strTextasstring'intM声明为变体变量,strText声明为字符型变量DimlngXaslong﹐sngYasSingle'lngX声明为长整型变量,sngY声明为单精度型变量若把多个变量都定义成同一类型,例如把X,Y,Z都定义成字节型(Byte),必须写成DimXasByte﹐YasByte﹐ZasByte如果写成DimX﹐Y﹐ZasByte则X﹐Y定义成变体类型,Z定义成字节类型。⑶可以将类型说明符加在变量名后,来代替“As数据类型”。变量名和类型说明符之间不能有空格。类型说明符参见表2.1。如:DimlngXaslong﹐sngYasSingle也可以声明为:DimlngX&﹐sngY!⑷对于字符串变量,根据其数据类型可分为变长和定长两种,变长字符串变量的长度不确定,是可变的;定长字符串变量的长度是固定不变的。变长字符串变量的声明语句为:Dim变量名AsString定长字符串变量的声明格式为:Dim变量名AsString*字符数定长字符串存放的最多字符数由*号后的字符数决定。如:DimstrString1AsString'strString1声明为变长字符串变量DimstrString2AsString*30'strString2声明为定长字符串变量,可存放30个字符注意:①变长字符串最多可存放2MB个字符。②赋予定长字符串的字符数如果少于给定个数,则右补空格。③赋予定长字符串的字符数如果超过给定个数,则会直接截去超出部分的字符。

⑸通常用对象型变量(Object)访问实际对象,如命令按钮,文本框或一个图形等对象。在声明对象型变量时,最好使用特定的类型,而不是一般的Object,然后用set语句为其指定一个具体对象,这样会使应用程序运行效率更快。例如下面的例子,通过改变对象变量X和Y来改变窗体上两个文本框Text1和Text2的属性。

DimXasTextBox﹐DimYasTextBoxSetX=Text1SetY=Text2X.Text=〝Thankyou!〞Y.Enabled=False2变量的隐式声明在VB中,可以不声明变量类型,而直接使用,使用时,系统根据变量被赋予的值来决定变量的数据类型。这种变量的声明被称为隐式声明。也可以在通用声明段中使用OptionExplicit语句来强制声明所有的变量。使用了OptionExplicit语句之后,当系统发现程序中没有显式声明的变量时,就会提示出错。可以在通用声明段自动插入OptionExplicit语句,方法是:单击“工具”菜单下的“选项”命令,在弹出的“选项”对话框中选中“要求变量声明”复选框,如图2.2所示。图2.2强制显示声明变量

选中“要求变量声明”复选框2.4内部函数

VB系统提供了丰富的内部函数(库函数),灵活运用这些函数,可以简化许多程序代码的编写。这些内部函数主要包括数学函数、字符函数和日期函数等。

2.4.1数学函数函数名功能举例Abs(x)求x的绝对值Abs(-1)=1Sgn(x)x>0,返回值为1;x=0,返回值为0;x<0,返回值为-1Sgn(-12)=-1;sgn(0)=0Sgn(12)=1Sqr(x)求x的算术平方根,x≥0Sqr(4)=2Exp(x)求自然数e的幂Exp(2)=7.38905609893065Log(x)求x的自然对数值Log(2)=0.693147180559945Sin(x)求x的正弦值Sin(0)=0Cos(x)求x的余弦值Cos(0)=1Tan(x)求x的正切值Tan(0)=0Int(x)求不大于x的最大整数Int(-3.8)=-4;int(3.8)=3Fix(x)将x的小数部分截去,取整数部分Fix(6.89)=6Round(x)四舍五入取整Round(3.8)=4Rnd求0~1之间的随机小数Rnd产生0~1之间的随机数。说明:⑴Sin(x)、Cos(x)和Tan(x)三角函数自变量的单位是弧度,如果是角度数值,先要转化为弧度。⑵Log(x)和Exp(x)互为反函数,即Log(Exp(x))Exp(Log(x))的结果还是原来各自变量x的值。⑶要注意区分Int(x)、Fix(x)和Round(x)函数的异同。⑷使用下面的表达式可以生成一定范围的随机数:Int((上限-下限+1)*Rnd+下限)例如,Int((50-21+1)*Rnd+21),产生21~50之间的随机数。2.4.2字符串函数函数名功能举例Asc(s)求字符串s中第一个字符的ASCII值Asc(“ab”)=97Chr(N)将ASCII的值N转换成字符Chr(65)=”A”Str(N)将N转换为字符串Str(123)=“123”Val(s)将字符串s转换为数值Val(“123abc”)=123Len(s)求字符串s的长度Len(“abc”)=3Ucase(s)将字符串s中的小写字母转换成大写字母Ucase(“abCD”)=“ABC”Lcase(s)将字符串s中的大写字母转换成小写字母Lcase(“abCD”)=“abcd”String(n,s)产生由s中第一个字符组成的n个字符的字符串String(2,“abc”)=“aa”String(3,97)=“aaa”Left(s,n)从字符串s的左边开始截取n个字符Left(“abcd”,3)=“abc”Right(s,n)从字符串s的右边开始截取n个字符Right(“abcd”,2)=“cd”Mid(s,n1,n2)从字符串s的n1位置开始截取n2个字符Mid(“abcd”,2,2)=“bc”Mid(“abcd”,2)=“bcd”Ltrim(s)删除字符串s的前导空格Ltrim(“abc”)=“abc”Rtrim(s)删除字符串s的尾部空格Rtrim(“abc”)=〝“abc”Trim(s)删除字符串s的前导和尾部空格Trim(“abc”)=“abc”说明:⑴在String函数中,字符也可用ASCII码(附录)来表示。例如,String(3,97)等价于String(3,“acb”)⑵在函数Mid中,若省略n2,则得到从n1位置往后的所有字符。例如,Mid(“abcd”,2)=“bcd”2.4.3日期/时间函数函数名功能举例Now返回系统日期和时间Now:2006/4/232:18:30PMDate返回系统日期Date:2006/4/23Time返回系统时间Time:2:18:30PMYear(D/N)返回年份(1753~2078)Year(“2006/10/11”):2006Month(D/N)返回月份(1~12)Month(“2006/10/11”):10Day(D/N)返回日期(1~31)Day(“2006/10/11”):11Weekday(D)返回星期代号(1~7),星期日为1Weekday(“2006/10/11”):4WeekdayName(N)返回星期代号(1~7)的星期名称WeekdayName(4):星期三Hour(D/N)返回小时数(0~24)Hour(#2:18:30PM#):14Minute(D/N)返回分钟数(0~59)Minute(#2:18:30PM#):18Second(D/N)返回秒数(0~59)Second(#2:18:30PM#):30

说明:日期函数的自变量“D/N”可以是字符串表达式,也可以是数值表达式,也可以是日期函数Now、Date或Time。

2.5表达式

和其它语言一样,VB语言的表达式有算术表达式、关系表达式和逻辑表达式。表达式由操作数、运算符和圆括号构成。算术表达式往往是构成VB语句的基本元素,也是关系表达式的操作数。关系表达式与逻辑表达式常常用在条件语句与循环语句中,作为条件控制程序的流程走向。条件语句与循环语句见第四章。2.5.1算术表达式运算符运算规则示例及结果优先级^(幂)计算乘方和方根2^381*(乘)标准乘法7.5*2152/(除)标准除法运算,结果为浮点数4.5/2.51.82\(整除)整除运算,结果为整型5\225.5\2.623Mod(取余)求余运算,结果为第一个操作数整除第二个操作数所得的余数5Mod311Mod310Mod305.3Mod3.114+(加)标准加法5+275-(减)标准减法5-235说明:⑴表2.5中,优先级1级别最高,优先级5级别最低。⑵运算符\(整除)的操作数若不是整数,系统会先对操作数进行四舍五入取整,然后进行除运算,若运算结果不是整数,系统会对运算结果进行截尾取整。例如表2.5所示的表达式5.5\2.6,两操作数均不是整数,进行四舍五入取整之后,表达式相当于6\3,因此结果为2。⑶运算符“Mod”(取余)的操作数若不是整数,系统会先对操作数进行四舍五入取整,然后进行取余数运算。例如表2.5所示的表达式5.3Mod3.1两操作数均不是整数,进行四舍五入取整之后,表达式相当于5Mod3,结果为1。

【举例】算术表达式4+5\6*7/8Mod9的运算过程和结果如下:4+5\6*7/8Mod9

=4+5\42/8Mod9=4+5\5.25Mod9=4+1Mod9

=4+1

=5

2.5.2关系表达式运算符运算规则示例及结果优先级=(等于)两操作数若相等,结果值为True,否则为False1=1True同级<>(不等于)两操作数若不相等,结果值为True,否则为False“Fu”<>“she”True>(大于)第一个操作数若大于第二个操作数,结果值为True,否则为False“ab”>“aa”True<(小于)第一个操作数若小于第二个操作数,结果值为True,否则为False3<2False>=(大于等于)第一个操作数若大于或等于第二个操作数,结果值为True,否则为False7>=8False<=(小于等于)第一个操作数若小于或等于第二个操作数,结果值为True,否则为False5<=5True说明:

⑴关系运算符的运算对象可以是任何数据类型,也可以是算数表达式,运算结果为逻辑值真(True)或假(False)。例如,关系表达式4+5\6*7/8Mod9<>5中的关系运算符“<>”的操作数一个是算数表达式,另一个为一整型数值。

⑵操作数为若字符串,按其对应ASCII码值进行比较。例如,表2.6所示的表达式“ab”>“aa”,“b”和“a”对应的ASCII码值分别为97和96,因此,“ab”>“aa”的结果值为True。

各关系运算符优先级相同,所有算数运算符优先级均高于关系运算符。例如,关系表达式4+5\6*7/8Mod9<>5应先计算算术表达式,然后进行关系运算符的运算。根据上面算术表达式的计算结果,该关系表达式的运算结果为逻辑值False。2.5.3逻辑表达式运算符运算规则示例及结果优先级Not(取反)操作数为真时,结果为假操作数为假时,结果为真NotTrueFalseNotFalseTrue1And(与)操作数均为真时,结果才为真TrueAndTrueTrueTrueAndFalseFalse2Or(或)操作数只要有一个为真,结果就为真TrueOrFalseTrueFalseOrFalseFalse3Xor(异或)操作数相反时,结果才为真TrueXorFalseTrueTrueXorTrueFalse3说明:⑴参与逻辑运算的量一般都应是逻辑型数据,如果参与逻辑运算的两操作数是数值量,则以数值的二进制值逐位进行逻辑运算(将0看作False,将1看作True)。⑵VB中常用的逻辑运算符是Not、And和Or。它们用于将多个关系表达式进行逻辑判断。例如,数学上表示某个数在某个区域时用表达式:10≤X<20,用VB程序中应写成:X>=10AndX<20⑶逻辑运算符的优先级不相同,表2.7中,优先级1级别最高,优先级3级别最低。即Not(逻辑非)优先级最高,但它低于关系运算符。例如,逻辑表达式Not4+5\6*7/8Mod9<>5存在算术运算符、关系运算符和逻辑运算符,应先计算算术运算符,然后是关系运算符,最后计算逻辑运算符,根据前面关系表达式的运算结果,则该表达式的计算结果为True。2.6数据的输入输出

数据的输入、输出、以及对输出数据格式的要求等,都是处理数据的基本操作。VB提供了多种输入输出数据的手段,通过赋值语句、输入输出函数、Print方法和各种控件都可实现数据的输入和输出。本节主要介绍输入输出的语句、函数和方法。有关运用控件实现数据的输入输出将在后续章节中介绍。2.6.1赋值语句

赋值语句是VB语言最基本、最简单、最常用的语句,可以实现数据的输入和计算,同时为变量提供数据;另外,也可以在程序中为对象设置属性的值。一般有两种格式。格式1:变量=表达式格式2:[对象名.]属性=表达式功能:将赋值号(=)右边经过计算的表达式的值赋给赋值号(=)左边的变量或对象的属性。说明:⑴赋值号(=)右边的表达式可以是常量,变量或函数等特殊表达式。例如【引例】的事件代码中:Msg2$="输入格式为:年/月/日"′把字符串常量"输入格式为:年/月/日"赋给变量Msg2$Msg$=Msg1$+Chr$(13)+Msg2$′把表达式经过计算后得到的字符串赋给变量Msg$′将通过键盘输入的数据赋给变量D,InputBox()是键盘输入函数

D=InputBox(Msg$,"本学期放假时间")⑵在格式2中,若对象名省略,则默认对象为当前窗体。例如语句:Form1.FontBold=True等价FontBold=True⑶赋值号与关系运算符的等于号都用“=”表示,系统会根据所处的位置自动判断是何种意义的符号。2.6.2InputBox函数

InputBox函数是使用非常频繁的键盘输入函数。我们可以通过InputBox函数来接收从键盘输入的数据。

格式:变量=InputBox(提示[,标题内容][,默认值[,横坐标][,纵坐标])说明:⑴该函数称为键盘输入函数,可以用来接收用户通过键盘输入的数据。

⑵该函数的5个参数中,其中第一个参数必不可少,其余均可选。参数说明见下表。参数说明提示对话框内显示的“提示信息”标题内容标题,对话框标题栏的内容默认值输入区中输入字符串的默认值横坐标对话框距离屏幕左边界的距离(X坐标)纵坐标对话框距离屏幕上边界的距离(Y坐标)

⑶该函数被执行后,被执行后,出现类似于图2.3(b)所示的对话框,并等待用户的操作,如果有“默认值”,则在输入区显示默认值,用户可以修改默认值,然后按回车键或单击“确定”按钮,也可以不输入任何数据而直接按回车键或单击“确定”按钮后,对话框消失,同时将默认值或修改后的数据赋给赋值号左边的变量。如语句a=InputBox("请输入数据:","Inputbox函数的使用",1000,2000,3000)图2.3(b)Inputbox函数示例2数据输入区的默认值标题内容提示

⑷如果没有“默认值”,则数据输入无任何数据,而等待用户输入,用户在输入区输入数据后,同样按回车键或者单击“确定”命令按钮后,对话框消失,同时将输入的数据赋给赋值号左边的变量。⑸对于括号内的可选参数,可省略任意几个,也可全部省略。如果仅仅省略中间的参数,则相应的逗号不能省略,要留着逗号占位。

例如:Msg1$="请输入本学期的放假日期:"Msg2$="输入格式为:年/月/日"Msg$=Msg1$+Chr$(13)+Msg2$D=InputBox(Msg$,"本学期放假时间",,3800,3800)InputBox函数只省略了中间一个参数。虽然参数省略了,但逗号(,)并没有省略,用逗号来占位。⑹该函数返回值的类型是字符串型,若要用到数值,可用两种方式进行转化。①用val()函数进行转化.

a=Val(InputBox("请输入数据","Inputbox函数的使用",1000,2000,2000))

②用定义变量的方法进行转化.DimaAsIntegera=InputBox("请输入数据","inputbox函数的使用",1000,2000,2000)转化后,变量a为数值型。2.6.3Print方法

Print方法的作用是在一些对象(如窗体、部分控件)上输出信息,格式如下:[对象名.]Print[Spc(n)|Tab(n)][表达式表][,|;]说明:⑴对象名是可选参数。可以是窗体、图片框、打印机或立即窗口(Debug);如果省略对象名,则表示在当前窗体输出。⑵表达式表是一个或多个表达式,是可选参数。如果表达式是常量,则按原样输出;如果是变量,则输出变量的值;如果是包含运算符的表达式,则先计算后输出;如果省略表达式表,则输出一个空行。

⑶Spc(n)为可选参数。用来在输出位置插入空格,n为要插入的空格个数。例如:Print〝BA〞;Spc(8);〝AB〞输出结果:BAAB字符串“BA”和“AB”之间相隔8个空格。字符串“AB”从窗体的第十一个位置开始输出。

⑷Tab(n)为可选参数。用来将输出的位置定位在绝对列号上,n为输出位置的列号。例如:Print〝BA〞;Tab(8);〝AB〞输出结果:BAAB字符串“AB”从窗体的第八个位置开始显示,由于第一个字符串“BA”占两个格,因此字符串“BA”和“AB”之间相隔6个空格。

⑸输出数值时,数值的前面有一个符号位,后面有一个空格;输出字符串时,前后都没有空格。

⑹输出的多个表达式之间若用逗号隔开,则按照标准格式(分区输出格式)显示数据项;多个表达式之间如果用分号或空格作分隔符,则按照紧凑格式输出。例如:x=1:y=2:z=3Printx,y,z,”ABCD”PrintPrintx,y,z;”ABCDEF”;”GHIJK”输出结果为:123ABCDEF123ABCDEFGHIJK⑺Print方法的末尾若无任何符号,则显示一次信息要自动换行。为了使下一个Print方法的输出信息能在同一行显示,可在末尾加上分号或逗号。使用分号时,当前要输出的信息将紧挨着上一个Print方法的输出信息在同一行显示;使用逗号时,当前要输出的信息将在上一个Print方法输出信息的同一行的下一个显示区显示。例如:Print〝20+30=〞,Print20+30Print〝20+30=〞;Print20+30=输出结果为:20+30=5020+30=50【例2.1】编写程序。在窗体上显示鼠标的当前位置。要求:程序运行后,在窗体某位置按下鼠标任意键,则在窗体上显示鼠标当前位置的横坐标和纵坐标。图2.4【例2.1】运行效果图

分析:根据题目要求,不需设计用户界面,可设置窗体的Caption属性为:“在窗体上显示鼠标当前位置”。题目要求程序运行后,如果按下鼠标任意键,在窗体上显示鼠标的当前位置,因此应该为窗体的MouseDown事件编写事件驱动代码。代码如下:PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Cls'用Cls方法清除窗体上显示的文本信息FontSize=16'设置显示在窗体上文本信息的字体大小Print"鼠标当前位置:"'用Print方法输出字符串常量Form1.FontUnderline=True'显示的文本信息加下划线'换行输出一个字符串常量和参数X的值,X为鼠标当前位置的横坐标Print"横坐标:";X,Print“纵坐标:”;Y‘在同一行的下一个显示区输出鼠标当前位置的纵坐标EndSubForm_MouseDown事件驱动代码中部分语句的分析:①Cls方法前如果没有指明特定的对象,则默认的是清除窗体上的文本信息。②语句:Print"横坐标:";X,末尾的“,”表示下一个输出信息将在同一行的下一个显示区内显示。输出的字符串常量“横坐标”和参数X之间的“;”表示显示的两信息按紧凑格式输出。通过【例2.1】,希望读者注意以下知识点:①Cls方法的使用。②输出文本字形、字体的设置。③Print方法的使用,注意各种输出格式之间的区别。④对象鼠标事件的使用,如例题中(Form_MouseDown)事件过程,当在窗体上按下鼠标任意键时该事件就会被触发。2.6.4Fortmat格式输出函数

格式输出函数Format$常和Print方法结合使用,使数值型、日期型或字符串型数据按照指定的格式输出。格式如下:Format$(表达式[,“格式化字符串”])参数说明:(1)表达式是指要格式的数值、日期和字符串型表达式。(2)格式化字符串表示输出表达式值时所采用的输出格式,要用双引号“”括起来。(3)格式化字符串有三类:数值格式化、日期和时间格式化和字符串格式化。1数值格式化符号功能数值表达式格式化字符串显示结果0实际数字小于符号位数时,数字前加01234.5671234.567“00000.0000”“000.0”01234.56701234.6#实际数字小于符号位数时,数字前后不加01234.5671234.567“#####.####”“###.#”1234.5671234.6.加小数点12345“00000.00”12345.00,千分位1234.567“##,##0.0000”1,234.5670%数值乘以100,加百分号1234.567“####.##%”123456.7%$数字前强加$1234.567“$####.#”$1234.6+数字前强加+1234.567“+####.#”+1234.6-数字前强加--1234.567“-####.#”-1234.6E+用指数表示0.1234“0.00E+00”1.23E-01E-用指数表示1234.567“.00E-00”.12E04说明:对于符号0和#,若要显示的数值表达式的整数部分位数多于格式化字符串的位数,则按照实际数值显示;若小数部分的位数多于格式化符号的位数,则四舍五入显示。2日期和时间格式化符号功能符号功能d显示日期(1~31),个位前不加0yyyy四位数显示年份(0100~9999)dd显示日期(1~31),个位前加0q季度数(1~4)ddd显示日期缩写(Sun~Sat)h显示小时(0~23),个位前不加0dddd显示日期全名(Sunday~Saturday)hh显示小时(0~23),个位前加0ddddd显示完整日期(年-月-日)m在h后显示分(0~59),个位前不加0w星期为数字(1~7,1为星期日)mm在h后显示分(0~59),个位前加0ww一年中的星期数(1~52)s显示秒(0~59),个位前不加0m显示月份(1~12),个位前不加0ss显示秒(0~59),个位前加0mm显示月份(1~12),个位前加0ttttt显示完整的时间,默认格式为hh:mm:ssmmm显示月份缩写(Jan~Dec)AM/amPM/pm12小时的时钟,中午前AM或am中午后PM或pmmmmm显示月份全名(January~December)y显示一年中的天(1~356)A/aP/p12小时的时钟,中午前A或a中午后P或pyy两位数显示年份(0~99)说明:①分钟的格式化符号m、mm与月份的格式化符号相同,区分的方法:跟在h、hh后的为分钟,否则为月份。②非格式化符号“-”、“/”、“:”等将照原样显示。【例2.2】利用Format函数显示有关的日期和函数。图2.5【例2.2】运行结果

OptionExplicitPrivateSubForm_Click()DimMyTimeAsDate,MyDateAsDateFontSize=16'显示系统当前日期和时间PrintFormat(Now,"yyyy年mm月dd日hh小时mm分钟ss秒")PrintFormat(Now,"yy年m月d日h小时m分钟s秒")PrintFormat(Now,"ddddd,ddd,mmm,dd,yyyy")'以预定义的格式显示系统当前日期PrintFormat(Date,"ddddd,ddd,mmm,dd,yyyy")MyTime=#5:06:08PM#MyDate=#4/25/2003#'显示日期MyDatePrintFormat(MyDate,"mm/dd/yyyy")PrintFormat(MyDate,"m-d-yy")PrintFormat(MyDate,"mmmm/dddd/yyyy")PrintFormat(MyDate,"ddddd")'显示时间MyTimePrintFormat(MyTime,"h-m-sAM/PM")PrintFormat(MyTime,"hh:mm:ssA/P")PrintFormat(MyTime,"h小时m分钟s秒AM/PM")PrintFormat(MyTime,"hh小时:mm分钟:ss秒A/P")EndSub说明:①上述代码中,语句OptionExplicit书写在通用声明段,用来强制显示声明变量的,有了该语句后,当系统发现程序中没有显式声明的变量时,会提示出错。②Now函数返回当前系统日期和系统时间;Date函数返回当前系统日期。3字符串格式化符号功能字符串表达式格式化字符串显示结果<强迫字母以小写显示“Basic”“<”basic>强迫字母以大写显示“Basic”“>”BASIC@实际字符位小于符号位时,字符前加空格“Basic”“@@@@@@@@”□□□Basic&实际字符位小于符号位时,字符前不加空格“Basic”“&&&&&&&&”Basic2.6.5MsgBox过程和MsgBox函数

在程序执行的过程中,有时需要向用户报告某些信息,比如给出某些出错提示信息,使用MsgBox函数和过程可以实现这样的功能,不仅可以向用户传送信息,并可以接受用户所做的响应,同时提供更友好的用户界面,非常实用。1MsgBox过程格式:Msgbox提示内容,[按钮类型,][标题栏内容]功能:显示用户提示信息的消息框。参数说明:(1)提示内容:必选参数,在对话框内显示的“提示信息”。(2)按钮类型:可选参数,设置消息框将出现何种按钮、按钮个数及显示图标的类型等,设置值用系统给定的某些正整数或者VB特定内部常量来表示。具体设置值及其含义见表2.12。

(3)标题内容:可选参数,显示在对话框顶部的标题栏。表2.12MsgBox过程按钮类型参数说明类型内部常量按钮值说明按钮VbOkOnly0只显示“确定”按钮VbOkCancel1显示“确定”、“取消”按钮VbAbortRetryIgnore2显示“终止”、“重试”、“忽略”按钮VbYesNoCancel3显示“是”、“否”、“取消”按钮VbYesNo4显示“是”、“否”按钮vbRetryCancel5显示“重试”、“取消”按钮图标vbCritical16关键信息图标:红色stop标志vbQuestion32询问信息图标:?vbExclamation48警告信息图标:!vbInformation64信息图标:I默认按钮VbDefaultButton10第一个按钮是默认值VbDefaultButton2256第二个按钮是默认值VbDefaultButton3512第三个按钮是默认值等待模式VbApplicationModal0当前应用程序一直被挂起,直到用户做出响应才继续VbSystemModal4096全部应用程序都被挂起,直到用户做出响应才继续说明:可以将不同按钮类型使用“+”号进行组合,采用内部常量形式或按钮值都可。例如,窗体的单击事件代码如下:PrivateSubForm_Click()MsgBox"3+32的组合结果",3+32,"MsgBox消息框示例"EndSub程序运行后,单击窗体,显示如图2.6所示消息框:图2.6MsgBox过程示例标题栏内容提示内容按钮值32的图标按钮值为3的按钮2MsgBox函数

在程序执行的过程中,有时不仅需要向用户报告某些信息,而且让用户进行选择,系统将用户选择的结果作为后续操作的依据。这时就要运用MsgBox函数来实现此功能。格式:变量=Msgbox(提示内容,[按钮类型,][标题栏内容])说明:⑴从语法格式上来看,MsgBox函数的参数和MsgBox过程的参数完全相同,只是多了函数的小括号,一个赋值号和一个变量。⑵MsgBox函数和MsgBox过程的使用方法完全相同。

⑶系统根据用户对消息框按钮的选择结果以整数或内部常量的形式返回给一个变量。也就是说,MsgBox函数的返回值是整数(内部常量),这个整数(内部常量)与选择的按钮有关。MsgBox函数返回值与所选按钮的对应情况见下表对应被选按钮返回值(整数、内部常量)确定1vbOk取消2vbCancel终止3vbAbort重试4vbRetry忽略5vbIgnore是6vbYes否7vbNo例如,窗体的单击事件代码如下:PrivateSubForm_Click()a=MsgBox("3+32的组合结果",3+32,"MsgBox消息框示例")Print"a=";aEndSub单击“是”命令按钮后,消息框消失,同时在窗体的左上角显示“a=6”,见图2.7(b)所示,说明当用户所选按钮是“是”时,对应的整数是6将赋给变量a;同理,选择按钮“否”时,窗体上显示“a=7”;选择按钮“取消”时,窗体上显示“a=2”。

图2.7(b)MsgBox函数示例图2.7(a)MsgBox函数示例

2.7程序模块和变量的作用域

2.7.1程序模块

在VB中,一个应用程序,即一个工程可以由三种模块构成:窗体模块、标准模块和类模块。这三种模块中可以包含各种过程和声明,形成了工程的模块层次结构,有利于工程的组织和维护。1窗体模块

每个窗体对应一个窗体模块,在窗体模块内可以包含窗体和其它控件对象的属性设置、各种声明和各种过程等。简单的应用程序一般只有一个窗体模块,功能较复杂的应用程序常常需要多个窗体模块。2标准模块

标准模块内的公用过程可以被任何窗体或模块中的事件过程或其他过程调用。在当前工程中创建一个新的标准模块的方法是:单击“工程”→“添加模块”菜单命令,打开添加“模块”对话框,如图2.8(a)所示,在保证选中“新建”选项卡和“模块”图标的情况下,单击“打开”按钮,即可打开标准模块的代码窗口(与窗体的代码窗口类似),此时在标准模块的代码窗口中就可以编写过程代码了。图2.8(a)添加“标准模块”的对话框3类模块

在VB中,类模块是面向对象编程的基础。可以在类模块中编写代码建立新的对象。这些对象可以包含自定义的属性和方法。其实,窗体本身就是一个类模块。标准模块和类模块的区别在于,标准模块中仅含有代码;而类模块中不仅可以含有代码,也可包含界面。在工程中添加类模块时,单击“工程”→“添加类模块”菜单命令,此时将弹出“添加类模块”对话框,选择一个类型,单击“打开”按钮即可,如图2.8(b)所示。在程序中添加标准模块和类模块后,工程资源管理器窗口如图2.8(c)所示。图2.8(b)添加“类模块”的对话框图2.8(c)添加“标准模块”和“类模块”后的工程资源管理器窗口2.7.2变量的作用域

一个复杂的VB应用程序,通常会由多个过程组成,各种过程都可以定义自己的变量(也包括常量),这样就存在一个问题,这些变量是否在所有过程中都可以使用呢?变量可被访问的范围叫变量的作用域,变量的作用范围会随着变量所处位置的不同而不同。变量的作用域决定了哪些过程可以访问该变量,哪些过程不可以访问该变量。变量按照作用域可以划分为局部变量、模块级变量和全局变量。1局部变量

局部变量是指在过程内用Dim语句声明的变量(或不加声明而直接使用的变量)。只有该过程内部的代码程序才能访问该变量。局部变量的作用范围只限制在该过程。在一个过程中要声明一个局部变量,可以使用Dim或Static关键字声明。例如:DimNAsFloat,MAsDoubleStaticXAsInteger用Static声明的变量通常称为静态局部变量,该类变量在应用程序的整个运行过程中都一直存在,即使退出该过程(注意,并未退出应用程序),在下一次运行时仍继续保留原来的值;而用Dim声明的变量只在过程执行时存在,退出过程后,这类变量就会消失,下一次调用该过程时会重新分配新的存储空间,也就是说,变量会被重新赋初值。见示例2模块级变量模块级变量又叫私有变量。它是指在一个模块的所有过程之外用Dim或Private关键字声明的变量,即在通用声明段内用Dim或Private关键字声明的变量。Dim和Private的作用相同,但使用Private可提高代码的可读性。模块级变量在声明它的整个模块内的所有过程中都可以被访问,但其它模块却不能访问该类变量。见示例:求单击命令按钮的次数.3全局变量全局变量也叫公有变量。它是指在任何模块的任何过程之外用Public或Global关键字声明的变量,即在通用声明段内用Public或Global关键字声明的变量。说明:全局变量在所有模块的所有过程中都可被访问,它的作用范围是整个应用程序。全局变量的值在应用程序的整个生存期都不会消失和被初始化,只有当整个应用程序运行结束时才会消失。用Const关键字声明的符号常量也是全局的,但只能在标准模块(不能在窗体模块和类模块中)的通用声明段用Public或Global关键字进行声明。将变量定义成全局变量虽然很方便,但会降低程序的可读性,同时将会加大调试程序的难度,特别是在复杂的、较大的应用程序中使用全局变量时,容易出错。因此建议读者尽量少使用全局变量。下表出了三种变量的作用范围及访问规则:局部变量模块级变量全局变量作用范围所处的过程中所处的模块中整个应用程序声明关键字Dim、StaticDim、PrivatePublic、Global声明的位置在过程中在模块的通用声明段在模块的通用声明段被本模块的其它过程访问不可以可以可以被其它模块的过程访问不可以不可以可以【例2.3】编写程序,实现当鼠标在窗体的任意位置移动时,将显示鼠标的移动轨迹,轨迹以用户输入的字符表示。要求:当程序运行后,首先弹出输入信息的对话框,再将输入的字符用消息框显示出来。分析:根据题目要求,不需要设计用户界面,由于要求程序运行后首先显示输入信息对话框,因此相关的代码应书写在窗体的Load事件代码中,即当程序一运行就执行的一段代码;鼠标在窗体上移动时显示鼠标移动轨迹的操作的相关代码要书写在窗体的鼠标移动(MouseMove)事件中;再者,鼠标的轨迹要以输入的字符表示,则需要模块级变量,即私有变量来记录输入的字符,以实现在同一模块内的不同过程使用同一变量的目的;同时还需记录鼠标的当前位置以实现显示鼠标轨迹的目的。事件驱动代码如下:①变量a将用来存储用户输入的字符,由于要使其值保持连续性,在不同过程中都要使用,因此应将变量a声明为模块级变量,在通用声明段用Private关键字声明。Privatea②窗体的加载事件过程(Form_Load())的代码如下:PrivateSubForm_Load()a=InputBox("请输入一个字符!","输入信息")MsgBox"您输入的是字符"&a,,"显示输入的字符"EndSub

上述程序代码只有两条语句,第一条运用InputBox()函数接收用户输入的字符,并存入变量a中;第二条语句运用MsgBox过程将变量a的值在消息框中输出。③窗体的鼠标移动事件过程(Form_MouseMove())的代码如下:PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)CurrentX=XCurrentY=YPrintaEndSub上述程序代码中的CurrentX和CurrentY是窗体的属性,表示下一次输出位置的横坐标(CurrentX)和纵坐标(CurrentY),这两个属性只能在代码中使用。

对于窗体的鼠标移动事件过程(Form_MouseMove)来讲,当鼠标在窗体上移动时该事件就会被触发。因此,只要鼠标在窗体上移动一下,该事件过程代码段就会被执行一次,那么表示下一次输出位置的横坐标(CurrentX)和纵坐标(CurrentY)的值就会被表示鼠标当前位置的参数X和Y刷新一次,则变量a的输出位置也会被刷新一次。这样,当鼠标在窗体上移动时就会形成鼠标的轨迹,同时轨迹用变量a的值(用户输入的字符)表示出来。图2.10(a)输入信息对话框

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论