版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第2章VisualBasic語(yǔ)言基礎(chǔ)知識(shí)
數(shù)據(jù)是VB應(yīng)用程序的重要組成部分,在存儲(chǔ)和處理數(shù)據(jù)時(shí)涉及到的有關(guān)數(shù)據(jù)類型、常量和變量、內(nèi)部函數(shù)、表達(dá)式、基本輸入輸出語(yǔ)句等基礎(chǔ)知識(shí)是VB程序設(shè)計(jì)的基礎(chǔ)。本章將介紹這方面的內(nèi)容,為以后VB的學(xué)習(xí)打下必備的語(yǔ)言基礎(chǔ)。
【主要內(nèi)容】
●數(shù)據(jù)類型、常量和變量
●VB常用函數(shù)、表達(dá)式
●賦值語(yǔ)句、Print方法和輸入輸出函數(shù)
●程序模塊和變量的作用域2.1引例
【引例】編寫程序,用來(lái)查詢距離放假還有多少天。要求:程序運(yùn)行后,單擊窗體,輸入放假日期,然后在窗體上顯示當(dāng)天日期、放假日期和距離放假的天數(shù)等信息??赏ㄟ^(guò)鍵盤輸入函數(shù)提供數(shù)據(jù)輸入界面,將鍵盤輸入的日期和系統(tǒng)日期的差值作為結(jié)果值顯示在窗體上。2.2數(shù)據(jù)類型
VB中的每一個(gè)數(shù)據(jù)都屬于一種特定的數(shù)據(jù)類型,不同的數(shù)據(jù)類型,在內(nèi)存中所占的存儲(chǔ)空間各不相同,表示和處理的方法也不盡相同。在程序設(shè)計(jì)中,要隨時(shí)注意所用數(shù)據(jù)的類型。VB的數(shù)據(jù)類型分為系統(tǒng)定義和自定義兩種。系統(tǒng)定義的數(shù)據(jù)類型稱為標(biāo)準(zhǔn)數(shù)據(jù)類型,是由系統(tǒng)提供,不需要定義就能直接使用;而自定義數(shù)據(jù)類型需要以其它數(shù)據(jù)類型為基礎(chǔ),按照一定的語(yǔ)法規(guī)則來(lái)創(chuàng)建,它必須先定義(創(chuàng)建),后使用。VB的標(biāo)準(zhǔn)數(shù)據(jù)類型包括:
1字符串型(String)字符串型數(shù)據(jù)是指一切可打印的字符和字符串,是用雙引號(hào)(“”)括起來(lái)的一個(gè)字符序列。例如:“ASD”、“123”、“請(qǐng)輸入本學(xué)期的放假日期:”均是字符串。在VisualBasic中,字符串?dāng)?shù)據(jù)類型可分為變長(zhǎng)和定長(zhǎng)兩種,變長(zhǎng)字符串的長(zhǎng)度不確定,是可變的;定長(zhǎng)字符串的長(zhǎng)度是固定不變的。說(shuō)明:①“”表示空字符串,而“”表示空格字符串。②一般情況下,一個(gè)西文字符占一個(gè)字符,一個(gè)漢字或全角字符占兩個(gè)字節(jié)。而在VB6.0以后的版本中,一個(gè)西文字符和一個(gè)漢字均占兩個(gè)字節(jié)。2數(shù)值型(Numeric)
在VisualBasic中,數(shù)值型數(shù)據(jù)是指能夠進(jìn)行加、減、乘、除、整除、乘方和取模等算術(shù)運(yùn)算的數(shù)據(jù),它包括整數(shù)和實(shí)數(shù)。(1)整型數(shù):不含小數(shù)點(diǎn)和指數(shù)符號(hào)的數(shù)。▲整型(Integer)如:123%,-123,在內(nèi)存中占2個(gè)字節(jié)?!L(zhǎng)整型(Long)如:123&,在內(nèi)存中占4個(gè)字節(jié)。▲字節(jié)型(Byte)Byte數(shù)據(jù)類型實(shí)際是一個(gè)字節(jié)的無(wú)符號(hào)整數(shù),所以不能表示負(fù)數(shù),所能表示的數(shù)據(jù)的范圍是:0~255。(2)實(shí)型數(shù)實(shí)型數(shù)是帶有符號(hào)、小數(shù)部分和指數(shù)部分的數(shù)值,包括:▲單精度型(Single)在內(nèi)存中占4個(gè)字節(jié),范圍為–231~231-1?!p精度型(Double)在內(nèi)存中占8個(gè)字節(jié),范圍–263~263-1。
3貨幣型(Currency)專門為表示貨幣而設(shè)置的一種數(shù)據(jù)類型。在內(nèi)存中占8個(gè)字節(jié),精確到小數(shù)點(diǎn)后面4位,小數(shù)點(diǎn)前有15位。4邏輯型(Boolean)
若變量的值只是“true/false”、“yes/no”、“on/off”信息,則可將它聲明為邏輯類型。邏輯型數(shù)據(jù)的缺省值為False。5日期型(Date)日期型數(shù)據(jù)用語(yǔ)表示日期和時(shí)間,在內(nèi)存中占8個(gè)字節(jié)。日期范圍:100年1月1日~9999年12月31日,時(shí)間從0:00:00~23:59:59。日期型數(shù)據(jù)必須以#或雙引號(hào)“”括起來(lái),如:#January1,1993#、#12/31/92#和“12-31-92”都是合法的日期型數(shù)據(jù),如不合法,系統(tǒng)會(huì)給出提示信息。6對(duì)象型(Object)對(duì)象型(Object)數(shù)據(jù)存儲(chǔ)的是32位(4個(gè)字節(jié))的地址,該地址引用應(yīng)用程序中的對(duì)象,通常用來(lái)表示圖形、OLE對(duì)象或其它對(duì)象。7變體型(Variant)變體數(shù)據(jù)類型是一種可變的數(shù)據(jù)類型,又稱為萬(wàn)用型數(shù)據(jù)類型,是一種特殊的、可以表示所有系統(tǒng)定義的數(shù)據(jù)類型。變體數(shù)據(jù)類型對(duì)數(shù)據(jù)的處理可以根據(jù)上下文的變化而變化,為VB的數(shù)據(jù)處理增加了智能型。變體型數(shù)據(jù)可以表示任何類型的數(shù)據(jù),包括數(shù)值型、字符串型、日期型等。
VB中的標(biāo)準(zhǔn)數(shù)據(jù)類型數(shù)據(jù)類型類型符前綴占字節(jié)數(shù)范圍整型(Integer)%Int2-32768~32767長(zhǎng)整型(LongInteger)&Lng4-2147438648~2147438647字節(jié)型(Byte)無(wú)byte10~255單精度浮點(diǎn)型(Single)!Sng4-3.402823E38~-1.401298E-451.401298E-45~3.402823E38雙精度浮點(diǎn)型(Double)#Dbl8-1.79769313486232E308~-4.94065645841247E-3244.94065645841247E-324~1.79769313486232E308貨幣型(Currency)@Cur8-922337203685477.5808~9223372036854775807字符串型(String)變長(zhǎng)$Str10+串長(zhǎng)0~大約20億定長(zhǎng)串長(zhǎng)1~大約65535字節(jié)邏輯型(Boolean)無(wú)Bln2True或False日期時(shí)間型(Date)無(wú)Dtm8100年1月1日~9999年12月31日變體型(Variant)數(shù)字無(wú)Vnt16任何數(shù)字值,最大可達(dá)到Double的范圍字符22+串長(zhǎng)與變長(zhǎng)String有相同的范圍對(duì)象型(Object)無(wú)Obj4可供任何對(duì)象引用2.3常量和變量
VB中存在著兩種表征數(shù)據(jù)的形式:常量和變量。常量表示在程序運(yùn)行期間其值不可被改變的量,它用來(lái)表示數(shù)據(jù)的值;變量不但可以表示數(shù)據(jù)的值,也可以用來(lái)存放數(shù)據(jù),每一個(gè)變量都對(duì)應(yīng)著一個(gè)存儲(chǔ)單元,在程序運(yùn)行期間其值可以發(fā)生改變。
2.3.1常量和變量命名規(guī)則
VB6.0中,常量和變量的命名規(guī)則如下:⑴只能由字母,數(shù)字和下劃線組成,且第一個(gè)字符必須是字母。⑵長(zhǎng)度不得超過(guò)255個(gè)字符。⑶不能是VB的關(guān)鍵字。⑷不能包含小數(shù)點(diǎn)。⑸VB中不區(qū)分變量名的大小寫,例如TCT,tct,Tct等都認(rèn)為是同一個(gè)變量名。⑹變量名不能與過(guò)程名、符號(hào)常量名相同,最好使用縮寫前綴,以區(qū)分變量類型。為了增加程序的可讀性,變量名最好具有實(shí)際意義,簡(jiǎn)單明了,不要太長(zhǎng)。以下常量和變量名非法:
5xy‘不允許以數(shù)字開頭X.y'不允許出現(xiàn)小數(shù)點(diǎn)End‘不允許是關(guān)鍵字X+y'不允許出現(xiàn)加號(hào)
2.3.2常量
常量指在程序運(yùn)行過(guò)程中,其值保持不變的量。在VisualBasic中,常量可分為直接常量和符號(hào)常量?jī)煞N。1直接常量直接常量就是在程序中,以直接明顯的形式給出數(shù)據(jù)本身的數(shù)值。根據(jù)數(shù)據(jù)類型,直接常量有數(shù)值常量、字符串常量、邏輯常量和日期常量。(1)字符串常量:是用雙引號(hào)括起來(lái)的字符序列。如“AAAA”。(2)數(shù)值常量:如678,31.96,4.8E-2等。(3)邏輯常量:如False。(4)日期常量:如#1999-10-2310:25#。2符號(hào)常量有些值在程序中會(huì)多次使用,如果在每次使用時(shí)都重復(fù)輸入,即浪費(fèi)時(shí)間又容易出錯(cuò),同時(shí),如果要改變此直接常量的值,就需要改動(dòng)程序中的許多地方,既麻煩又容易遺漏。這時(shí),可以用一個(gè)容易理解和記憶的符號(hào)來(lái)表示該常量,在程序中,凡出現(xiàn)該常量的地方,都用此符號(hào)代替,把這樣的符號(hào)稱為符號(hào)常量,如用MAX表示最大值,MIN表示最小值等。符號(hào)常量使用前須聲明。符號(hào)常量的聲明格式:Const常量名[As類型名]=表達(dá)式若省略類型名,則由表達(dá)式的類型決定。'Pi為單精度型常量ConstMAXAsInteger=9'Max為整型常量ConstYDATE=#1/1/95#'YDATE為日期型常量ConstPNAME="LiYan"'PNAME為字符型常量如果用逗號(hào)進(jìn)行分隔,則在一行中可放置多個(gè)常數(shù)聲明,如:
2.3.3變量
在程序的執(zhí)行過(guò)程中,其值可以發(fā)生改變的量稱為變量。變量看作是一個(gè)被命名的存儲(chǔ)單元,不同類型的變量在內(nèi)存中占用的存儲(chǔ)單元不同。在默認(rèn)狀態(tài)下,VB中可以不進(jìn)行變量聲明,此時(shí)變量類型默認(rèn)為變體類型(Variant),但這樣做可能由于變量名的誤寫而產(chǎn)生不良后果,所以變量應(yīng)先聲明后使用。變量聲明后,系統(tǒng)會(huì)根據(jù)變量類型,為它分配相應(yīng)的存儲(chǔ)空間,并確定該空間可存儲(chǔ)的數(shù)據(jù)類型。
1變量的顯式聲明
顯示聲明變量可以使用Dim,Static,Public,Private這四個(gè)關(guān)鍵字。這一節(jié)介紹用關(guān)鍵字Dim來(lái)聲明變量,其它關(guān)鍵字在本章的后續(xù)小節(jié)中介紹。Dim語(yǔ)句的語(yǔ)法格式如下:Dim變量名[as數(shù)據(jù)類型]說(shuō)明:⑴方括號(hào)里的內(nèi)容可以省略。如省略,則該變量被聲明為變體型(Variant)。如:DimintCount'intCount聲明為變體變量
⑵可以使用連續(xù)聲明方式,將多個(gè)變量放在一行中一次聲明,用逗號(hào)隔開,但類型聲明不能共用,每個(gè)變量必須有自己的類型聲明。如:DimintSum﹐intAve'intSum,intAve都聲明為變體變量DimintM﹐strTextasstring'intM聲明為變體變量,strText聲明為字符型變量DimlngXaslong﹐sngYasSingle'lngX聲明為長(zhǎng)整型變量,sngY聲明為單精度型變量若把多個(gè)變量都定義成同一類型,例如把X,Y,Z都定義成字節(jié)型(Byte),必須寫成DimXasByte﹐YasByte﹐ZasByte如果寫成DimX﹐Y﹐ZasByte則X﹐Y定義成變體類型,Z定義成字節(jié)類型。⑶可以將類型說(shuō)明符加在變量名后,來(lái)代替“As數(shù)據(jù)類型”。變量名和類型說(shuō)明符之間不能有空格。類型說(shuō)明符參見表2.1。如:DimlngXaslong﹐sngYasSingle也可以聲明為:DimlngX&﹐sngY!⑷對(duì)于字符串變量,根據(jù)其數(shù)據(jù)類型可分為變長(zhǎng)和定長(zhǎng)兩種,變長(zhǎng)字符串變量的長(zhǎng)度不確定,是可變的;定長(zhǎng)字符串變量的長(zhǎng)度是固定不變的。變長(zhǎng)字符串變量的聲明語(yǔ)句為:Dim變量名AsString定長(zhǎng)字符串變量的聲明格式為:Dim變量名AsString*字符數(shù)定長(zhǎng)字符串存放的最多字符數(shù)由*號(hào)后的字符數(shù)決定。如:DimstrString1AsString'strString1聲明為變長(zhǎng)字符串變量DimstrString2AsString*30'strString2聲明為定長(zhǎng)字符串變量,可存放30個(gè)字符注意:①變長(zhǎng)字符串最多可存放2MB個(gè)字符。②賦予定長(zhǎng)字符串的字符數(shù)如果少于給定個(gè)數(shù),則右補(bǔ)空格。③賦予定長(zhǎng)字符串的字符數(shù)如果超過(guò)給定個(gè)數(shù),則會(huì)直接截去超出部分的字符。
⑸通常用對(duì)象型變量(Object)訪問(wèn)實(shí)際對(duì)象,如命令按鈕,文本框或一個(gè)圖形等對(duì)象。在聲明對(duì)象型變量時(shí),最好使用特定的類型,而不是一般的Object,然后用set語(yǔ)句為其指定一個(gè)具體對(duì)象,這樣會(huì)使應(yīng)用程序運(yùn)行效率更快。例如下面的例子,通過(guò)改變對(duì)象變量X和Y來(lái)改變窗體上兩個(gè)文本框Text1和Text2的屬性。
DimXasTextBox﹐DimYasTextBoxSetX=Text1SetY=Text2X.Text=〝Thankyou!〞Y.Enabled=False2變量的隱式聲明在VB中,可以不聲明變量類型,而直接使用,使用時(shí),系統(tǒng)根據(jù)變量被賦予的值來(lái)決定變量的數(shù)據(jù)類型。這種變量的聲明被稱為隱式聲明。也可以在通用聲明段中使用OptionExplicit語(yǔ)句來(lái)強(qiáng)制聲明所有的變量。使用了OptionExplicit語(yǔ)句之后,當(dāng)系統(tǒng)發(fā)現(xiàn)程序中沒(méi)有顯式聲明的變量時(shí),就會(huì)提示出錯(cuò)??梢栽谕ㄓ寐暶鞫巫詣?dòng)插入OptionExplicit語(yǔ)句,方法是:?jiǎn)螕簟肮ぞ摺辈藛蜗碌摹斑x項(xiàng)”命令,在彈出的“選項(xiàng)”對(duì)話框中選中“要求變量聲明”復(fù)選框,如圖2.2所示。圖2.2強(qiáng)制顯示聲明變量
選中“要求變量聲明”復(fù)選框2.4內(nèi)部函數(shù)
VB系統(tǒng)提供了豐富的內(nèi)部函數(shù)(庫(kù)函數(shù)),靈活運(yùn)用這些函數(shù),可以簡(jiǎn)化許多程序代碼的編寫。這些內(nèi)部函數(shù)主要包括數(shù)學(xué)函數(shù)、字符函數(shù)和日期函數(shù)等。
2.4.1數(shù)學(xué)函數(shù)函數(shù)名功能舉例Abs(x)求x的絕對(duì)值A(chǔ)bs(-1)=1Sgn(x)x>0,返回值為1;x=0,返回值為0;x<0,返回值為-1Sgn(-12)=-1;sgn(0)=0Sgn(12)=1Sqr(x)求x的算術(shù)平方根,x≥0Sqr(4)=2Exp(x)求自然數(shù)e的冪Exp(2)=7.38905609893065Log(x)求x的自然對(duì)數(shù)值Log(2)=0.693147180559945Sin(x)求x的正弦值Sin(0)=0Cos(x)求x的余弦值Cos(0)=1Tan(x)求x的正切值Tan(0)=0Int(x)求不大于x的最大整數(shù)Int(-3.8)=-4;int(3.8)=3Fix(x)將x的小數(shù)部分截去,取整數(shù)部分Fix(6.89)=6Round(x)四舍五入取整Round(3.8)=4Rnd求0~1之間的隨機(jī)小數(shù)Rnd產(chǎn)生0~1之間的隨機(jī)數(shù)。說(shuō)明:⑴Sin(x)、Cos(x)和Tan(x)三角函數(shù)自變量的單位是弧度,如果是角度數(shù)值,先要轉(zhuǎn)化為弧度。⑵Log(x)和Exp(x)互為反函數(shù),即Log(Exp(x))Exp(Log(x))的結(jié)果還是原來(lái)各自變量x的值。⑶要注意區(qū)分Int(x)、Fix(x)和Round(x)函數(shù)的異同。⑷使用下面的表達(dá)式可以生成一定范圍的隨機(jī)數(shù):Int((上限-下限+1)*Rnd+下限)例如,Int((50-21+1)*Rnd+21),產(chǎn)生21~50之間的隨機(jī)數(shù)。2.4.2字符串函數(shù)函數(shù)名功能舉例Asc(s)求字符串s中第一個(gè)字符的ASCII值A(chǔ)sc(“ab”)=97Chr(N)將ASCII的值N轉(zhuǎn)換成字符Chr(65)=”A”Str(N)將N轉(zhuǎn)換為字符串Str(123)=“123”Val(s)將字符串s轉(zhuǎn)換為數(shù)值Val(“123abc”)=123Len(s)求字符串s的長(zhǎng)度Len(“abc”)=3Ucase(s)將字符串s中的小寫字母轉(zhuǎn)換成大寫字母Ucase(“abCD”)=“ABC”Lcase(s)將字符串s中的大寫字母轉(zhuǎn)換成小寫字母Lcase(“abCD”)=“abcd”String(n,s)產(chǎn)生由s中第一個(gè)字符組成的n個(gè)字符的字符串String(2,“abc”)=“aa”String(3,97)=“aaa”Left(s,n)從字符串s的左邊開始截取n個(gè)字符Left(“abcd”,3)=“abc”Right(s,n)從字符串s的右邊開始截取n個(gè)字符Right(“abcd”,2)=“cd”Mid(s,n1,n2)從字符串s的n1位置開始截取n2個(gè)字符Mid(“abcd”,2,2)=“bc”Mid(“abcd”,2)=“bcd”Ltrim(s)刪除字符串s的前導(dǎo)空格Ltrim(“abc”)=“abc”Rtrim(s)刪除字符串s的尾部空格Rtrim(“abc”)=〝“abc”Trim(s)刪除字符串s的前導(dǎo)和尾部空格Trim(“abc”)=“abc”說(shuō)明:⑴在String函數(shù)中,字符也可用ASCII碼(附錄)來(lái)表示。例如,String(3,97)等價(jià)于String(3,“acb”)⑵在函數(shù)Mid中,若省略n2,則得到從n1位置往后的所有字符。例如,Mid(“abcd”,2)=“bcd”2.4.3日期/時(shí)間函數(shù)函數(shù)名功能舉例Now返回系統(tǒng)日期和時(shí)間Now:2006/4/232:18:30PMDate返回系統(tǒng)日期Date:2006/4/23Time返回系統(tǒng)時(shí)間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)返回星期代號(hào)(1~7),星期日為1Weekday(“2006/10/11”):4WeekdayName(N)返回星期代號(hào)(1~7)的星期名稱WeekdayName(4):星期三Hour(D/N)返回小時(shí)數(shù)(0~24)Hour(#2:18:30PM#):14Minute(D/N)返回分鐘數(shù)(0~59)Minute(#2:18:30PM#):18Second(D/N)返回秒數(shù)(0~59)Second(#2:18:30PM#):30
說(shuō)明:日期函數(shù)的自變量“D/N”可以是字符串表達(dá)式,也可以是數(shù)值表達(dá)式,也可以是日期函數(shù)Now、Date或Time。
2.5表達(dá)式
和其它語(yǔ)言一樣,VB語(yǔ)言的表達(dá)式有算術(shù)表達(dá)式、關(guān)系表達(dá)式和邏輯表達(dá)式。表達(dá)式由操作數(shù)、運(yùn)算符和圓括號(hào)構(gòu)成。算術(shù)表達(dá)式往往是構(gòu)成VB語(yǔ)句的基本元素,也是關(guān)系表達(dá)式的操作數(shù)。關(guān)系表達(dá)式與邏輯表達(dá)式常常用在條件語(yǔ)句與循環(huán)語(yǔ)句中,作為條件控制程序的流程走向。條件語(yǔ)句與循環(huán)語(yǔ)句見第四章。2.5.1算術(shù)表達(dá)式運(yùn)算符運(yùn)算規(guī)則示例及結(jié)果優(yōu)先級(jí)^(冪)計(jì)算乘方和方根2^381*(乘)標(biāo)準(zhǔn)乘法7.5*2152/(除)標(biāo)準(zhǔn)除法運(yùn)算,結(jié)果為浮點(diǎn)數(shù)4.5/2.51.82\(整除)整除運(yùn)算,結(jié)果為整型5\225.5\2.623Mod(取余)求余運(yùn)算,結(jié)果為第一個(gè)操作數(shù)整除第二個(gè)操作數(shù)所得的余數(shù)5Mod311Mod310Mod305.3Mod3.114+(加)標(biāo)準(zhǔn)加法5+275-(減)標(biāo)準(zhǔn)減法5-235說(shuō)明:⑴表2.5中,優(yōu)先級(jí)1級(jí)別最高,優(yōu)先級(jí)5級(jí)別最低。⑵運(yùn)算符\(整除)的操作數(shù)若不是整數(shù),系統(tǒng)會(huì)先對(duì)操作數(shù)進(jìn)行四舍五入取整,然后進(jìn)行除運(yùn)算,若運(yùn)算結(jié)果不是整數(shù),系統(tǒng)會(huì)對(duì)運(yùn)算結(jié)果進(jìn)行截尾取整。例如表2.5所示的表達(dá)式5.5\2.6,兩操作數(shù)均不是整數(shù),進(jìn)行四舍五入取整之后,表達(dá)式相當(dāng)于6\3,因此結(jié)果為2。⑶運(yùn)算符“Mod”(取余)的操作數(shù)若不是整數(shù),系統(tǒng)會(huì)先對(duì)操作數(shù)進(jìn)行四舍五入取整,然后進(jìn)行取余數(shù)運(yùn)算。例如表2.5所示的表達(dá)式5.3Mod3.1兩操作數(shù)均不是整數(shù),進(jìn)行四舍五入取整之后,表達(dá)式相當(dāng)于5Mod3,結(jié)果為1。
【舉例】算術(shù)表達(dá)式4+5\6*7/8Mod9的運(yùn)算過(guò)程和結(jié)果如下:4+5\6*7/8Mod9
=4+5\42/8Mod9=4+5\5.25Mod9=4+1Mod9
=4+1
=5
2.5.2關(guān)系表達(dá)式運(yùn)算符運(yùn)算規(guī)則示例及結(jié)果優(yōu)先級(jí)=(等于)兩操作數(shù)若相等,結(jié)果值為True,否則為False1=1True同級(jí)<>(不等于)兩操作數(shù)若不相等,結(jié)果值為True,否則為False“Fu”<>“she”True>(大于)第一個(gè)操作數(shù)若大于第二個(gè)操作數(shù),結(jié)果值為True,否則為False“ab”>“aa”True<(小于)第一個(gè)操作數(shù)若小于第二個(gè)操作數(shù),結(jié)果值為True,否則為False3<2False>=(大于等于)第一個(gè)操作數(shù)若大于或等于第二個(gè)操作數(shù),結(jié)果值為True,否則為False7>=8False<=(小于等于)第一個(gè)操作數(shù)若小于或等于第二個(gè)操作數(shù),結(jié)果值為True,否則為False5<=5True說(shuō)明:
⑴關(guān)系運(yùn)算符的運(yùn)算對(duì)象可以是任何數(shù)據(jù)類型,也可以是算數(shù)表達(dá)式,運(yùn)算結(jié)果為邏輯值真(True)或假(False)。例如,關(guān)系表達(dá)式4+5\6*7/8Mod9<>5中的關(guān)系運(yùn)算符“<>”的操作數(shù)一個(gè)是算數(shù)表達(dá)式,另一個(gè)為一整型數(shù)值。
⑵操作數(shù)為若字符串,按其對(duì)應(yīng)ASCII碼值進(jìn)行比較。例如,表2.6所示的表達(dá)式“ab”>“aa”,“b”和“a”對(duì)應(yīng)的ASCII碼值分別為97和96,因此,“ab”>“aa”的結(jié)果值為True。
⑶
各關(guān)系運(yùn)算符優(yōu)先級(jí)相同,所有算數(shù)運(yùn)算符優(yōu)先級(jí)均高于關(guān)系運(yùn)算符。例如,關(guān)系表達(dá)式4+5\6*7/8Mod9<>5應(yīng)先計(jì)算算術(shù)表達(dá)式,然后進(jìn)行關(guān)系運(yùn)算符的運(yùn)算。根據(jù)上面算術(shù)表達(dá)式的計(jì)算結(jié)果,該關(guān)系表達(dá)式的運(yùn)算結(jié)果為邏輯值False。2.5.3邏輯表達(dá)式運(yùn)算符運(yùn)算規(guī)則示例及結(jié)果優(yōu)先級(jí)Not(取反)操作數(shù)為真時(shí),結(jié)果為假操作數(shù)為假時(shí),結(jié)果為真NotTrueFalseNotFalseTrue1And(與)操作數(shù)均為真時(shí),結(jié)果才為真TrueAndTrueTrueTrueAndFalseFalse2Or(或)操作數(shù)只要有一個(gè)為真,結(jié)果就為真TrueOrFalseTrueFalseOrFalseFalse3Xor(異或)操作數(shù)相反時(shí),結(jié)果才為真TrueXorFalseTrueTrueXorTrueFalse3說(shuō)明:⑴參與邏輯運(yùn)算的量一般都應(yīng)是邏輯型數(shù)據(jù),如果參與邏輯運(yùn)算的兩操作數(shù)是數(shù)值量,則以數(shù)值的二進(jìn)制值逐位進(jìn)行邏輯運(yùn)算(將0看作False,將1看作True)。⑵VB中常用的邏輯運(yùn)算符是Not、And和Or。它們用于將多個(gè)關(guān)系表達(dá)式進(jìn)行邏輯判斷。例如,數(shù)學(xué)上表示某個(gè)數(shù)在某個(gè)區(qū)域時(shí)用表達(dá)式:10≤X<20,用VB程序中應(yīng)寫成:X>=10AndX<20⑶邏輯運(yùn)算符的優(yōu)先級(jí)不相同,表2.7中,優(yōu)先級(jí)1級(jí)別最高,優(yōu)先級(jí)3級(jí)別最低。即Not(邏輯非)優(yōu)先級(jí)最高,但它低于關(guān)系運(yùn)算符。例如,邏輯表達(dá)式Not4+5\6*7/8Mod9<>5存在算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符,應(yīng)先計(jì)算算術(shù)運(yùn)算符,然后是關(guān)系運(yùn)算符,最后計(jì)算邏輯運(yùn)算符,根據(jù)前面關(guān)系表達(dá)式的運(yùn)算結(jié)果,則該表達(dá)式的計(jì)算結(jié)果為True。2.6數(shù)據(jù)的輸入輸出
數(shù)據(jù)的輸入、輸出、以及對(duì)輸出數(shù)據(jù)格式的要求等,都是處理數(shù)據(jù)的基本操作。VB提供了多種輸入輸出數(shù)據(jù)的手段,通過(guò)賦值語(yǔ)句、輸入輸出函數(shù)、Print方法和各種控件都可實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出。本節(jié)主要介紹輸入輸出的語(yǔ)句、函數(shù)和方法。有關(guān)運(yùn)用控件實(shí)現(xiàn)數(shù)據(jù)的輸入輸出將在后續(xù)章節(jié)中介紹。2.6.1賦值語(yǔ)句
賦值語(yǔ)句是VB語(yǔ)言最基本、最簡(jiǎn)單、最常用的語(yǔ)句,可以實(shí)現(xiàn)數(shù)據(jù)的輸入和計(jì)算,同時(shí)為變量提供數(shù)據(jù);另外,也可以在程序中為對(duì)象設(shè)置屬性的值。一般有兩種格式。格式1:變量=表達(dá)式格式2:[對(duì)象名.]屬性=表達(dá)式功能:將賦值號(hào)(=)右邊經(jīng)過(guò)計(jì)算的表達(dá)式的值賦給賦值號(hào)(=)左邊的變量或?qū)ο蟮膶傩浴Uf(shuō)明:⑴賦值號(hào)(=)右邊的表達(dá)式可以是常量,變量或函數(shù)等特殊表達(dá)式。例如【引例】的事件代碼中:Msg2$="輸入格式為:年/月/日"′把字符串常量"輸入格式為:年/月/日"賦給變量Msg2$Msg$=Msg1$+Chr$(13)+Msg2$′把表達(dá)式經(jīng)過(guò)計(jì)算后得到的字符串賦給變量Msg$′將通過(guò)鍵盤輸入的數(shù)據(jù)賦給變量D,InputBox()是鍵盤輸入函數(shù)
D=InputBox(Msg$,"本學(xué)期放假時(shí)間")⑵在格式2中,若對(duì)象名省略,則默認(rèn)對(duì)象為當(dāng)前窗體。例如語(yǔ)句:Form1.FontBold=True等價(jià)FontBold=True⑶賦值號(hào)與關(guān)系運(yùn)算符的等于號(hào)都用“=”表示,系統(tǒng)會(huì)根據(jù)所處的位置自動(dòng)判斷是何種意義的符號(hào)。2.6.2InputBox函數(shù)
InputBox函數(shù)是使用非常頻繁的鍵盤輸入函數(shù)。我們可以通過(guò)InputBox函數(shù)來(lái)接收從鍵盤輸入的數(shù)據(jù)。
格式:變量=InputBox(提示[,標(biāo)題內(nèi)容][,默認(rèn)值[,橫坐標(biāo)][,縱坐標(biāo)])說(shuō)明:⑴該函數(shù)稱為鍵盤輸入函數(shù),可以用來(lái)接收用戶通過(guò)鍵盤輸入的數(shù)據(jù)。
⑵該函數(shù)的5個(gè)參數(shù)中,其中第一個(gè)參數(shù)必不可少,其余均可選。參數(shù)說(shuō)明見下表。參數(shù)說(shuō)明提示對(duì)話框內(nèi)顯示的“提示信息”標(biāo)題內(nèi)容標(biāo)題,對(duì)話框標(biāo)題欄的內(nèi)容默認(rèn)值輸入?yún)^(qū)中輸入字符串的默認(rèn)值橫坐標(biāo)對(duì)話框距離屏幕左邊界的距離(X坐標(biāo))縱坐標(biāo)對(duì)話框距離屏幕上邊界的距離(Y坐標(biāo))
⑶該函數(shù)被執(zhí)行后,被執(zhí)行后,出現(xiàn)類似于圖2.3(b)所示的對(duì)話框,并等待用戶的操作,如果有“默認(rèn)值”,則在輸入?yún)^(qū)顯示默認(rèn)值,用戶可以修改默認(rèn)值,然后按回車鍵或單擊“確定”按鈕,也可以不輸入任何數(shù)據(jù)而直接按回車鍵或單擊“確定”按鈕后,對(duì)話框消失,同時(shí)將默認(rèn)值或修改后的數(shù)據(jù)賦給賦值號(hào)左邊的變量。如語(yǔ)句a=InputBox("請(qǐng)輸入數(shù)據(jù):","Inputbox函數(shù)的使用",1000,2000,3000)圖2.3(b)Inputbox函數(shù)示例2數(shù)據(jù)輸入?yún)^(qū)的默認(rèn)值標(biāo)題內(nèi)容提示
⑷如果沒(méi)有“默認(rèn)值”,則數(shù)據(jù)輸入無(wú)任何數(shù)據(jù),而等待用戶輸入,用戶在輸入?yún)^(qū)輸入數(shù)據(jù)后,同樣按回車鍵或者單擊“確定”命令按鈕后,對(duì)話框消失,同時(shí)將輸入的數(shù)據(jù)賦給賦值號(hào)左邊的變量。⑸對(duì)于括號(hào)內(nèi)的可選參數(shù),可省略任意幾個(gè),也可全部省略。如果僅僅省略中間的參數(shù),則相應(yīng)的逗號(hào)不能省略,要留著逗號(hào)占位。
例如:Msg1$="請(qǐng)輸入本學(xué)期的放假日期:"Msg2$="輸入格式為:年/月/日"Msg$=Msg1$+Chr$(13)+Msg2$D=InputBox(Msg$,"本學(xué)期放假時(shí)間",,3800,3800)InputBox函數(shù)只省略了中間一個(gè)參數(shù)。雖然參數(shù)省略了,但逗號(hào)(,)并沒(méi)有省略,用逗號(hào)來(lái)占位。⑹該函數(shù)返回值的類型是字符串型,若要用到數(shù)值,可用兩種方式進(jìn)行轉(zhuǎn)化。①用val()函數(shù)進(jìn)行轉(zhuǎn)化.
a=Val(InputBox("請(qǐng)輸入數(shù)據(jù)","Inputbox函數(shù)的使用",1000,2000,2000))
②用定義變量的方法進(jìn)行轉(zhuǎn)化.DimaAsIntegera=InputBox("請(qǐng)輸入數(shù)據(jù)","inputbox函數(shù)的使用",1000,2000,2000)轉(zhuǎn)化后,變量a為數(shù)值型。2.6.3Print方法
Print方法的作用是在一些對(duì)象(如窗體、部分控件)上輸出信息,格式如下:[對(duì)象名.]Print[Spc(n)|Tab(n)][表達(dá)式表][,|;]說(shuō)明:⑴對(duì)象名是可選參數(shù)??梢允谴绑w、圖片框、打印機(jī)或立即窗口(Debug);如果省略對(duì)象名,則表示在當(dāng)前窗體輸出。⑵表達(dá)式表是一個(gè)或多個(gè)表達(dá)式,是可選參數(shù)。如果表達(dá)式是常量,則按原樣輸出;如果是變量,則輸出變量的值;如果是包含運(yùn)算符的表達(dá)式,則先計(jì)算后輸出;如果省略表達(dá)式表,則輸出一個(gè)空行。
⑶Spc(n)為可選參數(shù)。用來(lái)在輸出位置插入空格,n為要插入的空格個(gè)數(shù)。例如:Print〝BA〞;Spc(8);〝AB〞輸出結(jié)果:BAAB字符串“BA”和“AB”之間相隔8個(gè)空格。字符串“AB”從窗體的第十一個(gè)位置開始輸出。
⑷Tab(n)為可選參數(shù)。用來(lái)將輸出的位置定位在絕對(duì)列號(hào)上,n為輸出位置的列號(hào)。例如:Print〝BA〞;Tab(8);〝AB〞輸出結(jié)果:BAAB字符串“AB”從窗體的第八個(gè)位置開始顯示,由于第一個(gè)字符串“BA”占兩個(gè)格,因此字符串“BA”和“AB”之間相隔6個(gè)空格。
⑸輸出數(shù)值時(shí),數(shù)值的前面有一個(gè)符號(hào)位,后面有一個(gè)空格;輸出字符串時(shí),前后都沒(méi)有空格。
⑹輸出的多個(gè)表達(dá)式之間若用逗號(hào)隔開,則按照標(biāo)準(zhǔn)格式(分區(qū)輸出格式)顯示數(shù)據(jù)項(xiàng);多個(gè)表達(dá)式之間如果用分號(hào)或空格作分隔符,則按照緊湊格式輸出。例如:x=1:y=2:z=3Printx,y,z,”ABCD”PrintPrintx,y,z;”ABCDEF”;”GHIJK”輸出結(jié)果為:123ABCDEF123ABCDEFGHIJK⑺Print方法的末尾若無(wú)任何符號(hào),則顯示一次信息要自動(dòng)換行。為了使下一個(gè)Print方法的輸出信息能在同一行顯示,可在末尾加上分號(hào)或逗號(hào)。使用分號(hào)時(shí),當(dāng)前要輸出的信息將緊挨著上一個(gè)Print方法的輸出信息在同一行顯示;使用逗號(hào)時(shí),當(dāng)前要輸出的信息將在上一個(gè)Print方法輸出信息的同一行的下一個(gè)顯示區(qū)顯示。例如:Print〝20+30=〞,Print20+30Print〝20+30=〞;Print20+30=輸出結(jié)果為:20+30=5020+30=50【例2.1】編寫程序。在窗體上顯示鼠標(biāo)的當(dāng)前位置。要求:程序運(yùn)行后,在窗體某位置按下鼠標(biāo)任意鍵,則在窗體上顯示鼠標(biāo)當(dāng)前位置的橫坐標(biāo)和縱坐標(biāo)。圖2.4【例2.1】運(yùn)行效果圖
分析:根據(jù)題目要求,不需設(shè)計(jì)用戶界面,可設(shè)置窗體的Caption屬性為:“在窗體上顯示鼠標(biāo)當(dāng)前位置”。題目要求程序運(yùn)行后,如果按下鼠標(biāo)任意鍵,在窗體上顯示鼠標(biāo)的當(dāng)前位置,因此應(yīng)該為窗體的MouseDown事件編寫事件驅(qū)動(dòng)代碼。代碼如下:PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Cls'用Cls方法清除窗體上顯示的文本信息FontSize=16'設(shè)置顯示在窗體上文本信息的字體大小Print"鼠標(biāo)當(dāng)前位置:"'用Print方法輸出字符串常量Form1.FontUnderline=True'顯示的文本信息加下劃線'換行輸出一個(gè)字符串常量和參數(shù)X的值,X為鼠標(biāo)當(dāng)前位置的橫坐標(biāo)Print"橫坐標(biāo):";X,Print“縱坐標(biāo):”;Y‘在同一行的下一個(gè)顯示區(qū)輸出鼠標(biāo)當(dāng)前位置的縱坐標(biāo)EndSubForm_MouseDown事件驅(qū)動(dòng)代碼中部分語(yǔ)句的分析:①Cls方法前如果沒(méi)有指明特定的對(duì)象,則默認(rèn)的是清除窗體上的文本信息。②語(yǔ)句:Print"橫坐標(biāo):";X,末尾的“,”表示下一個(gè)輸出信息將在同一行的下一個(gè)顯示區(qū)內(nèi)顯示。輸出的字符串常量“橫坐標(biāo)”和參數(shù)X之間的“;”表示顯示的兩信息按緊湊格式輸出。通過(guò)【例2.1】,希望讀者注意以下知識(shí)點(diǎn):①Cls方法的使用。②輸出文本字形、字體的設(shè)置。③Print方法的使用,注意各種輸出格式之間的區(qū)別。④對(duì)象鼠標(biāo)事件的使用,如例題中(Form_MouseDown)事件過(guò)程,當(dāng)在窗體上按下鼠標(biāo)任意鍵時(shí)該事件就會(huì)被觸發(fā)。2.6.4Fortmat格式輸出函數(shù)
格式輸出函數(shù)Format$常和Print方法結(jié)合使用,使數(shù)值型、日期型或字符串型數(shù)據(jù)按照指定的格式輸出。格式如下:Format$(表達(dá)式[,“格式化字符串”])參數(shù)說(shuō)明:(1)表達(dá)式是指要格式的數(shù)值、日期和字符串型表達(dá)式。(2)格式化字符串表示輸出表達(dá)式值時(shí)所采用的輸出格式,要用雙引號(hào)“”括起來(lái)。(3)格式化字符串有三類:數(shù)值格式化、日期和時(shí)間格式化和字符串格式化。1數(shù)值格式化符號(hào)功能數(shù)值表達(dá)式格式化字符串顯示結(jié)果0實(shí)際數(shù)字小于符號(hào)位數(shù)時(shí),數(shù)字前加01234.5671234.567“00000.0000”“000.0”01234.56701234.6#實(shí)際數(shù)字小于符號(hào)位數(shù)時(shí),數(shù)字前后不加01234.5671234.567“#####.####”“###.#”1234.5671234.6.加小數(shù)點(diǎn)12345“00000.00”12345.00,千分位1234.567“##,##0.0000”1,234.5670%數(shù)值乘以100,加百分號(hào)1234.567“####.##%”123456.7%$數(shù)字前強(qiáng)加$1234.567“$####.#”$1234.6+數(shù)字前強(qiáng)加+1234.567“+####.#”+1234.6-數(shù)字前強(qiáng)加--1234.567“-####.#”-1234.6E+用指數(shù)表示0.1234“0.00E+00”1.23E-01E-用指數(shù)表示1234.567“.00E-00”.12E04說(shuō)明:對(duì)于符號(hào)0和#,若要顯示的數(shù)值表達(dá)式的整數(shù)部分位數(shù)多于格式化字符串的位數(shù),則按照實(shí)際數(shù)值顯示;若小數(shù)部分的位數(shù)多于格式化符號(hào)的位數(shù),則四舍五入顯示。2日期和時(shí)間格式化符號(hào)功能符號(hào)功能d顯示日期(1~31),個(gè)位前不加0yyyy四位數(shù)顯示年份(0100~9999)dd顯示日期(1~31),個(gè)位前加0q季度數(shù)(1~4)ddd顯示日期縮寫(Sun~Sat)h顯示小時(shí)(0~23),個(gè)位前不加0dddd顯示日期全名(Sunday~Saturday)hh顯示小時(shí)(0~23),個(gè)位前加0ddddd顯示完整日期(年-月-日)m在h后顯示分(0~59),個(gè)位前不加0w星期為數(shù)字(1~7,1為星期日)mm在h后顯示分(0~59),個(gè)位前加0ww一年中的星期數(shù)(1~52)s顯示秒(0~59),個(gè)位前不加0m顯示月份(1~12),個(gè)位前不加0ss顯示秒(0~59),個(gè)位前加0mm顯示月份(1~12),個(gè)位前加0ttttt顯示完整的時(shí)間,默認(rèn)格式為hh:mm:ssmmm顯示月份縮寫(Jan~Dec)AM/amPM/pm12小時(shí)的時(shí)鐘,中午前AM或am中午后PM或pmmmmm顯示月份全名(January~December)y顯示一年中的天(1~356)A/aP/p12小時(shí)的時(shí)鐘,中午前A或a中午后P或pyy兩位數(shù)顯示年份(0~99)說(shuō)明:①分鐘的格式化符號(hào)m、mm與月份的格式化符號(hào)相同,區(qū)分的方法:跟在h、hh后的為分鐘,否則為月份。②非格式化符號(hào)“-”、“/”、“:”等將照原樣顯示。【例2.2】利用Format函數(shù)顯示有關(guān)的日期和函數(shù)。圖2.5【例2.2】運(yùn)行結(jié)果
OptionExplicitPrivateSubForm_Click()DimMyTimeAsDate,MyDateAsDateFontSize=16'顯示系統(tǒng)當(dāng)前日期和時(shí)間PrintFormat(Now,"yyyy年mm月dd日hh小時(shí)mm分鐘ss秒")PrintFormat(Now,"yy年m月d日h小時(shí)m分鐘s秒")PrintFormat(Now,"ddddd,ddd,mmm,dd,yyyy")'以預(yù)定義的格式顯示系統(tǒng)當(dāng)前日期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")'顯示時(shí)間MyTimePrintFormat(MyTime,"h-m-sAM/PM")PrintFormat(MyTime,"hh:mm:ssA/P")PrintFormat(MyTime,"h小時(shí)m分鐘s秒AM/PM")PrintFormat(MyTime,"hh小時(shí):mm分鐘:ss秒A/P")EndSub說(shuō)明:①上述代碼中,語(yǔ)句OptionExplicit書寫在通用聲明段,用來(lái)強(qiáng)制顯示聲明變量的,有了該語(yǔ)句后,當(dāng)系統(tǒng)發(fā)現(xiàn)程序中沒(méi)有顯式聲明的變量時(shí),會(huì)提示出錯(cuò)。②Now函數(shù)返回當(dāng)前系統(tǒng)日期和系統(tǒng)時(shí)間;Date函數(shù)返回當(dāng)前系統(tǒng)日期。3字符串格式化符號(hào)功能字符串表達(dá)式格式化字符串顯示結(jié)果<強(qiáng)迫字母以小寫顯示“Basic”“<”basic>強(qiáng)迫字母以大寫顯示“Basic”“>”BASIC@實(shí)際字符位小于符號(hào)位時(shí),字符前加空格“Basic”“@@@@@@@@”□□□Basic&實(shí)際字符位小于符號(hào)位時(shí),字符前不加空格“Basic”“&&&&&&&&”Basic2.6.5MsgBox過(guò)程和MsgBox函數(shù)
在程序執(zhí)行的過(guò)程中,有時(shí)需要向用戶報(bào)告某些信息,比如給出某些出錯(cuò)提示信息,使用MsgBox函數(shù)和過(guò)程可以實(shí)現(xiàn)這樣的功能,不僅可以向用戶傳送信息,并可以接受用戶所做的響應(yīng),同時(shí)提供更友好的用戶界面,非常實(shí)用。1MsgBox過(guò)程格式:Msgbox提示內(nèi)容,[按鈕類型,][標(biāo)題欄內(nèi)容]功能:顯示用戶提示信息的消息框。參數(shù)說(shuō)明:(1)提示內(nèi)容:必選參數(shù),在對(duì)話框內(nèi)顯示的“提示信息”。(2)按鈕類型:可選參數(shù),設(shè)置消息框?qū)⒊霈F(xiàn)何種按鈕、按鈕個(gè)數(shù)及顯示圖標(biāo)的類型等,設(shè)置值用系統(tǒng)給定的某些正整數(shù)或者VB特定內(nèi)部常量來(lái)表示。具體設(shè)置值及其含義見表2.12。
(3)標(biāo)題內(nèi)容:可選參數(shù),顯示在對(duì)話框頂部的標(biāo)題欄。表2.12MsgBox過(guò)程按鈕類型參數(shù)說(shuō)明類型內(nèi)部常量按鈕值說(shuō)明按鈕VbOkOnly0只顯示“確定”按鈕VbOkCancel1顯示“確定”、“取消”按鈕VbAbortRetryIgnore2顯示“終止”、“重試”、“忽略”按鈕VbYesNoCancel3顯示“是”、“否”、“取消”按鈕VbYesNo4顯示“是”、“否”按鈕vbRetryCancel5顯示“重試”、“取消”按鈕圖標(biāo)vbCritical16關(guān)鍵信息圖標(biāo):紅色stop標(biāo)志vbQuestion32詢問(wèn)信息圖標(biāo):?vbExclamation48警告信息圖標(biāo):!vbInformation64信息圖標(biāo):I默認(rèn)按鈕VbDefaultButton10第一個(gè)按鈕是默認(rèn)值VbDefaultButton2256第二個(gè)按鈕是默認(rèn)值VbDefaultButton3512第三個(gè)按鈕是默認(rèn)值等待模式VbApplicationModal0當(dāng)前應(yīng)用程序一直被掛起,直到用戶做出響應(yīng)才繼續(xù)VbSystemModal4096全部應(yīng)用程序都被掛起,直到用戶做出響應(yīng)才繼續(xù)說(shuō)明:可以將不同按鈕類型使用“+”號(hào)進(jìn)行組合,采用內(nèi)部常量形式或按鈕值都可。例如,窗體的單擊事件代碼如下:PrivateSubForm_Click()MsgBox"3+32的組合結(jié)果",3+32,"MsgBox消息框示例"EndSub程序運(yùn)行后,單擊窗體,顯示如圖2.6所示消息框:圖2.6MsgBox過(guò)程示例標(biāo)題欄內(nèi)容提示內(nèi)容按鈕值32的圖標(biāo)按鈕值為3的按鈕2MsgBox函數(shù)
在程序執(zhí)行的過(guò)程中,有時(shí)不僅需要向用戶報(bào)告某些信息,而且讓用戶進(jìn)行選擇,系統(tǒng)將用戶選擇的結(jié)果作為后續(xù)操作的依據(jù)。這時(shí)就要運(yùn)用MsgBox函數(shù)來(lái)實(shí)現(xiàn)此功能。格式:變量=Msgbox(提示內(nèi)容,[按鈕類型,][標(biāo)題欄內(nèi)容])說(shuō)明:⑴從語(yǔ)法格式上來(lái)看,MsgBox函數(shù)的參數(shù)和MsgBox過(guò)程的參數(shù)完全相同,只是多了函數(shù)的小括號(hào),一個(gè)賦值號(hào)和一個(gè)變量。⑵MsgBox函數(shù)和MsgBox過(guò)程的使用方法完全相同。
⑶系統(tǒng)根據(jù)用戶對(duì)消息框按鈕的選擇結(jié)果以整數(shù)或內(nèi)部常量的形式返回給一個(gè)變量。也就是說(shuō),MsgBox函數(shù)的返回值是整數(shù)(內(nèi)部常量),這個(gè)整數(shù)(內(nèi)部常量)與選擇的按鈕有關(guān)。MsgBox函數(shù)返回值與所選按鈕的對(duì)應(yīng)情況見下表對(duì)應(yīng)被選按鈕返回值(整數(shù)、內(nèi)部常量)確定1vbOk取消2vbCancel終止3vbAbort重試4vbRetry忽略5vbIgnore是6vbYes否7vbNo例如,窗體的單擊事件代碼如下:PrivateSubForm_Click()a=MsgBox("3+32的組合結(jié)果",3+32,"MsgBox消息框示例")Print"a=";aEndSub單擊“是”命令按鈕后,消息框消失,同時(shí)在窗體的左上角顯示“a=6”,見圖2.7(b)所示,說(shuō)明當(dāng)用戶所選按鈕是“是”時(shí),對(duì)應(yīng)的整數(shù)是6將賦給變量a;同理,選擇按鈕“否”時(shí),窗體上顯示“a=7”;選擇按鈕“取消”時(shí),窗體上顯示“a=2”。
圖2.7(b)MsgBox函數(shù)示例圖2.7(a)MsgBox函數(shù)示例
2.7程序模塊和變量的作用域
2.7.1程序模塊
在VB中,一個(gè)應(yīng)用程序,即一個(gè)工程可以由三種模塊構(gòu)成:窗體模塊、標(biāo)準(zhǔn)模塊和類模塊。這三種模塊中可以包含各種過(guò)程和聲明,形成了工程的模塊層次結(jié)構(gòu),有利于工程的組織和維護(hù)。1窗體模塊
每個(gè)窗體對(duì)應(yīng)一個(gè)窗體模塊,在窗體模塊內(nèi)可以包含窗體和其它控件對(duì)象的屬性設(shè)置、各種聲明和各種過(guò)程等。簡(jiǎn)單的應(yīng)用程序一般只有一個(gè)窗體模塊,功能較復(fù)雜的應(yīng)用程序常常需要多個(gè)窗體模塊。2標(biāo)準(zhǔn)模塊
標(biāo)準(zhǔn)模塊內(nèi)的公用過(guò)程可以被任何窗體或模塊中的事件過(guò)程或其他過(guò)程調(diào)用。在當(dāng)前工程中創(chuàng)建一個(gè)新的標(biāo)準(zhǔn)模塊的方法是:?jiǎn)螕簟肮こ獭薄疤砑幽K”菜單命令,打開添加“模塊”對(duì)話框,如圖2.8(a)所示,在保證選中“新建”選項(xiàng)卡和“模塊”圖標(biāo)的情況下,單擊“打開”按鈕,即可打開標(biāo)準(zhǔn)模塊的代碼窗口(與窗體的代碼窗口類似),此時(shí)在標(biāo)準(zhǔn)模塊的代碼窗口中就可以編寫過(guò)程代碼了。圖2.8(a)添加“標(biāo)準(zhǔn)模塊”的對(duì)話框3類模塊
在VB中,類模塊是面向?qū)ο缶幊痰幕A(chǔ)。可以在類模塊中編寫代碼建立新的對(duì)象。這些對(duì)象可以包含自定義的屬性和方法。其實(shí),窗體本身就是一個(gè)類模塊。標(biāo)準(zhǔn)模塊和類模塊的區(qū)別在于,標(biāo)準(zhǔn)模塊中僅含有代碼;而類模塊中不僅可以含有代碼,也可包含界面。在工程中添加類模塊時(shí),單擊“工程”→“添加類模塊”菜單命令,此時(shí)將彈出“添加類模塊”對(duì)話框,選擇一個(gè)類型,單擊“打開”按鈕即可,如圖2.8(b)所示。在程序中添加標(biāo)準(zhǔn)模塊和類模塊后,工程資源管理器窗口如圖2.8(c)所示。圖2.8(b)添加“類模塊”的對(duì)話框圖2.8(c)添加“標(biāo)準(zhǔn)模塊”和“類模塊”后的工程資源管理器窗口2.7.2變量的作用域
一個(gè)復(fù)雜的VB應(yīng)用程序,通常會(huì)由多個(gè)過(guò)程組成,各種過(guò)程都可以定義自己的變量(也包括常量),這樣就存在一個(gè)問(wèn)題,這些變量是否在所有過(guò)程中都可以使用呢?變量可被訪問(wèn)的范圍叫變量的作用域,變量的作用范圍會(huì)隨著變量所處位置的不同而不同。變量的作用域決定了哪些過(guò)程可以訪問(wèn)該變量,哪些過(guò)程不可以訪問(wèn)該變量。變量按照作用域可以劃分為局部變量、模塊級(jí)變量和全局變量。1局部變量
局部變量是指在過(guò)程內(nèi)用Dim語(yǔ)句聲明的變量(或不加聲明而直接使用的變量)。只有該過(guò)程內(nèi)部的代碼程序才能訪問(wèn)該變量。局部變量的作用范圍只限制在該過(guò)程。在一個(gè)過(guò)程中要聲明一個(gè)局部變量,可以使用Dim或Static關(guān)鍵字聲明。例如:DimNAsFloat,MAsDoubleStaticXAsInteger用Static聲明的變量通常稱為靜態(tài)局部變量,該類變量在應(yīng)用程序的整個(gè)運(yùn)行過(guò)程中都一直存在,即使退出該過(guò)程(注意,并未退出應(yīng)用程序),在下一次運(yùn)行時(shí)仍繼續(xù)保留原來(lái)的值;而用Dim聲明的變量只在過(guò)程執(zhí)行時(shí)存在,退出過(guò)程后,這類變量就會(huì)消失,下一次調(diào)用該過(guò)程時(shí)會(huì)重新分配新的存儲(chǔ)空間,也就是說(shuō),變量會(huì)被重新賦初值。見示例2模塊級(jí)變量模塊級(jí)變量又叫私有變量。它是指在一個(gè)模塊的所有過(guò)程之外用Dim或Private關(guān)鍵字聲明的變量,即在通用聲明段內(nèi)用Dim或Private關(guān)鍵字聲明的變量。Dim和Private的作用相同,但使用Private可提高代碼的可讀性。模塊級(jí)變量在聲明它的整個(gè)模塊內(nèi)的所有過(guò)程中都可以被訪問(wèn),但其它模塊卻不能訪問(wèn)該類變量。見示例:求單擊命令按鈕的次數(shù).3全局變量全局變量也叫公有變量。它是指在任何模塊的任何過(guò)程之外用Public或Global關(guān)鍵字聲明的變量,即在通用聲明段內(nèi)用Public或Global關(guān)鍵字聲明的變量。說(shuō)明:全局變量在所有模塊的所有過(guò)程中都可被訪問(wèn),它的作用范圍是整個(gè)應(yīng)用程序。全局變量的值在應(yīng)用程序的整個(gè)生存期都不會(huì)消失和被初始化,只有當(dāng)整個(gè)應(yīng)用程序運(yùn)行結(jié)束時(shí)才會(huì)消失。用Const關(guān)鍵字聲明的符號(hào)常量也是全局的,但只能在標(biāo)準(zhǔn)模塊(不能在窗體模塊和類模塊中)的通用聲明段用Public或Global關(guān)鍵字進(jìn)行聲明。將變量定義成全局變量雖然很方便,但會(huì)降低程序的可讀性,同時(shí)將會(huì)加大調(diào)試程序的難度,特別是在復(fù)雜的、較大的應(yīng)用程序中使用全局變量時(shí),容易出錯(cuò)。因此建議讀者盡量少使用全局變量。下表出了三種變量的作用范圍及訪問(wèn)規(guī)則:局部變量模塊級(jí)變量全局變量作用范圍所處的過(guò)程中所處的模塊中整個(gè)應(yīng)用程序聲明關(guān)鍵字Dim、StaticDim、PrivatePublic、Global聲明的位置在過(guò)程中在模塊的通用聲明段在模塊的通用聲明段被本模塊的其它過(guò)程訪問(wèn)不可以可以可以被其它模塊的過(guò)程訪問(wèn)不可以不可以可以【例2.3】編寫程序,實(shí)現(xiàn)當(dāng)鼠標(biāo)在窗體的任意位置移動(dòng)時(shí),將顯示鼠標(biāo)的移動(dòng)軌跡,軌跡以用戶輸入的字符表示。要求:當(dāng)程序運(yùn)行后,首先彈出輸入信息的對(duì)話框,再將輸入的字符用消息框顯示出來(lái)。分析:根據(jù)題目要求,不需要設(shè)計(jì)用戶界面,由于要求程序運(yùn)行后首先顯示輸入信息對(duì)話框,因此相關(guān)的代碼應(yīng)書寫在窗體的Load事件代碼中,即當(dāng)程序一運(yùn)行就執(zhí)行的一段代碼;鼠標(biāo)在窗體上移動(dòng)時(shí)顯示鼠標(biāo)移動(dòng)軌跡的操作的相關(guān)代碼要書寫在窗體的鼠標(biāo)移動(dòng)(MouseMove)事件中;再者,鼠標(biāo)的軌跡要以輸入的字符表示,則需要模塊級(jí)變量,即私有變量來(lái)記錄輸入的字符,以實(shí)現(xiàn)在同一模塊內(nèi)的不同過(guò)程使用同一變量的目的;同時(shí)還需記錄鼠標(biāo)的當(dāng)前位置以實(shí)現(xiàn)顯示鼠標(biāo)軌跡的目的。事件驅(qū)動(dòng)代碼如下:①變量a將用來(lái)存儲(chǔ)用戶輸入的字符,由于要使其值保持連續(xù)性,在不同過(guò)程中都要使用,因此應(yīng)將變量a聲明為模塊級(jí)變量,在通用聲明段用Private關(guān)鍵字聲明。Privatea②窗體的加載事件過(guò)程(Form_Load())的代碼如下:PrivateSubForm_Load()a=InputBox("請(qǐng)輸入一個(gè)字符!","輸入信息")MsgBox"您輸入的是字符"&a,,"顯示輸入的字符"EndSub
上述程序代碼只有兩條語(yǔ)句,第一條運(yùn)用InputBox()函數(shù)接收用戶輸入的字符,并存入變量a中;第二條語(yǔ)句運(yùn)用MsgBox過(guò)程將變量a的值在消息框中輸出。③窗體的鼠標(biāo)移動(dòng)事件過(guò)程(Form_MouseMove())的代碼如下:PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)CurrentX=XCurrentY=YPrintaEndSub上述程序代碼中的CurrentX和CurrentY是窗體的屬性,表示下一次輸出位置的橫坐標(biāo)(CurrentX)和縱坐標(biāo)(CurrentY),這兩個(gè)屬性只能在代碼中使用。
對(duì)于窗體的鼠標(biāo)移動(dòng)事件過(guò)程(Form_MouseMove)來(lái)講,當(dāng)鼠標(biāo)在窗體上移動(dòng)時(shí)該事件就會(huì)被觸發(fā)。因此,只要鼠標(biāo)在窗體上移動(dòng)一下,該事件過(guò)程代碼段就會(huì)被執(zhí)行一次,那么表示下一次輸出位置的橫坐標(biāo)(CurrentX)和縱坐標(biāo)(CurrentY)的值就會(huì)被表示鼠標(biāo)當(dāng)前位置的參數(shù)X和Y刷新一次,則變量a的輸出位置也會(huì)被刷新一次。這樣,當(dāng)鼠標(biāo)在窗體上移動(dòng)時(shí)就會(huì)形成鼠標(biāo)的軌跡,同時(shí)軌跡用變量a的值(用戶輸入的字符)表示出來(lái)。圖2.10(a)輸入信息對(duì)話框
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能車位銷售代理合作協(xié)議書4篇
- 2025年度草原生態(tài)旅游投資合作草場(chǎng)租賃合同3篇
- 2025年度生態(tài)旅游項(xiàng)目土地承包合作協(xié)議范本4篇
- 2025版新能源汽車研發(fā)與制造承包合同范本3篇
- 二零二五版高校學(xué)生實(shí)習(xí)實(shí)訓(xùn)合同示范文本3篇
- 2025年度冷鏈物流保障下餐飲原材料集中采購(gòu)合同2篇
- 2025年食品安全追溯食品運(yùn)輸采購(gòu)合同3篇
- 2025版害蟲防治產(chǎn)品認(rèn)證與推廣服務(wù)合同3篇
- 二零二五年度酒店行業(yè)顧客信息保密與隱私保護(hù)協(xié)議范本4篇
- 教育行業(yè)售后服務(wù)模式在小區(qū)超市的應(yīng)用
- 2025新譯林版英語(yǔ)七年級(jí)下單詞表
- 新疆2024年中考數(shù)學(xué)試卷(含答案)
- 2024-2030年中國(guó)連續(xù)性腎臟替代治療(CRRT)行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 跨學(xué)科主題學(xué)習(xí):實(shí)施策略、設(shè)計(jì)要素與評(píng)價(jià)方式(附案例)
- 場(chǎng)地委托授權(quán)
- 2024年四川省成都市龍泉驛區(qū)中考數(shù)學(xué)二診試卷(含答案)
- 項(xiàng)目工地春節(jié)放假安排及安全措施
- 印染廠安全培訓(xùn)課件
- 紅色主題研學(xué)課程設(shè)計(jì)
- 裝置自動(dòng)控制的先進(jìn)性說(shuō)明
- 《企業(yè)管理課件:團(tuán)隊(duì)管理知識(shí)點(diǎn)詳解PPT》
評(píng)論
0/150
提交評(píng)論