- Visual Basic實(shí)例精通
- 柴相花等編著
- 8字
- 2019-03-01 14:47:01
第一篇 基礎(chǔ)知識(shí)篇
第1章 VB語(yǔ)言基礎(chǔ)
閱讀本書(shū)的前提是讀者有一定的VB基礎(chǔ),因此對(duì)于VB的集成開(kāi)發(fā)環(huán)境和VB的編程基礎(chǔ),尤其是創(chuàng)建一個(gè)VB應(yīng)用程序的步驟不再介紹。本書(shū)從VB的語(yǔ)言基礎(chǔ)開(kāi)始,通過(guò)小實(shí)例講解VB中的相關(guān)知識(shí)。本章主要介紹VB的語(yǔ)言基礎(chǔ),即VB編程過(guò)程中最簡(jiǎn)單的知識(shí),同時(shí)也是最重要的知識(shí),更是編程過(guò)程中最容易被編程者忽略和出錯(cuò)的知識(shí)點(diǎn)。因此讀者應(yīng)該重視這部分的介紹。
1.1 標(biāo)識(shí)符
標(biāo)識(shí)符,顧名思義,是標(biāo)識(shí)某個(gè)對(duì)象的符號(hào),這個(gè)對(duì)象可以是變量、常量、過(guò)程和函數(shù)等。在VB中,標(biāo)識(shí)符的定義有一定的規(guī)則,并且有一些標(biāo)識(shí)符是VB中保留下來(lái)作為關(guān)鍵字使用的,因此在定義標(biāo)識(shí)符時(shí),要避免使用這些保留字。下面通過(guò)一系列小實(shí)例來(lái)說(shuō)明標(biāo)識(shí)符的定義規(guī)則和保留字的運(yùn)用。
技術(shù)要點(diǎn)
在本實(shí)例中主要用到了 Form_ Load()事件,標(biāo)識(shí)符定義整型變量。保留字,文本框TextBox控件數(shù)組和For循環(huán)語(yǔ)句,主要功能和用法如下:
● Form_ Load()事件,加載窗體時(shí)會(huì)觸發(fā)這個(gè)事件。雙擊對(duì)象窗口中的窗體時(shí),如果該事件已經(jīng)在代碼窗口中創(chuàng)建,光標(biāo)就會(huì)停留在該事件代碼段的開(kāi)始位置;否則會(huì)創(chuàng)建該事件。
●運(yùn)用標(biāo)識(shí)符定義整型變量,即遵守標(biāo)識(shí)符的命名規(guī)則,定義一個(gè)變量來(lái)表示某種含義。在本實(shí)例中,定義的變量i用來(lái)表示循環(huán)參數(shù)。
●保留字,也稱(chēng)作關(guān)鍵字,是VB中保留下來(lái)的標(biāo)識(shí)符,用來(lái)表示固定的含義。在本實(shí)例中用到的保留字有Private、As、For、To、Next等。
●文本框控件TextBox,主要用來(lái)顯示文本信息。顯示文本信息主要通過(guò)控件的Text屬性進(jìn)行。
控件數(shù)組和For循環(huán)語(yǔ)句的功能和用法在后面的學(xué)習(xí)中詳細(xì)介紹。
實(shí)現(xiàn)代碼
Private Sub Form_Load() Dim i As Integer '定義整型變量,作為循環(huán)變量 For i = 0 To 7 'For循環(huán)語(yǔ)句 TxtWelcome(i).Visible = True '使得TxtWelcome控件數(shù)組可見(jiàn) Next i TxtWelcome(0).Text = "歡" '給TxtWelcome控件數(shù)組賦值為"歡" TxtWelcome(1).Text = "迎" '給TxtWelcome控件數(shù)組賦值為"迎" TxtWelcome(2).Text = "進(jìn)" '給TxtWelcome控件數(shù)組賦值為"進(jìn)" TxtWelcome(3).Text = "入" '給TxtWelcome控件數(shù)組賦值為"入" TxtWelcome(4).Text = "VB" '給TxtWelcome控件數(shù)組賦值為" VB " TxtWelcome(5).Text = "世" '給TxtWelcome控件數(shù)組賦值為"世" TxtWelcome(6).Text = "界" '給TxtWelcome控件數(shù)組賦值為"界" TxtWelcome(7).Text = "!" '給TxtWelcome控件數(shù)組賦值為"!" End Sub
單擊工具欄中的保存按鈕,保存工程,然后,單擊工具欄中的啟動(dòng)按鈕
,運(yùn)行工程,程序運(yùn)行結(jié)果如圖1.1所示。

圖1.1 程序運(yùn)行界面圖
單擊工具欄中的結(jié)束按鈕,或者單擊運(yùn)行窗口的關(guān)閉按鈕
,結(jié)束程序的運(yùn)行。
源程序解讀
(1)在代碼中只有Form_ Load()事件,在該事件中,首先定義整型變量i,用來(lái)控制For循環(huán)語(yǔ)句的執(zhí)行。這里循環(huán)變量的定義要遵循標(biāo)識(shí)符的命名規(guī)則:必須以字母開(kāi)頭的字母、數(shù)字或下畫(huà)線的組合,長(zhǎng)度不能超過(guò)255 個(gè)字符,并且不能和 VB 中的保留字重名。
(2)如果違反了以上規(guī)定,那么在代碼窗口會(huì)出現(xiàn)提示窗口。例如,當(dāng)把i的命名變?yōu)開(kāi) i時(shí),就會(huì)出現(xiàn)如圖1.2所示的提示窗口。如果把i的命名變?yōu)?i,就會(huì)出現(xiàn)如圖1.3所示的提示窗口。如果把i的命名變?yōu)锳s,就會(huì)出現(xiàn)如圖1.4所示的提示窗口。如果把i的命名改為其他的保留字,如For或Private,也會(huì)出現(xiàn)如圖1.3所示的提示窗口。定義變量i時(shí)用到了保留字As,VB中除了本實(shí)例中運(yùn)用的保留字外,還有其他很多保留字,這里不再一一列舉。

圖1.2 以下畫(huà)線開(kāi)頭命名標(biāo)識(shí)符時(shí)出現(xiàn)的提示窗口

圖1.3 以數(shù)字開(kāi)頭命名標(biāo)識(shí)符時(shí)出現(xiàn)的提示窗口

圖1.4 以保留字As命名標(biāo)識(shí)符時(shí)出現(xiàn)的提示窗口
(3)運(yùn)用For循環(huán)語(yǔ)句,設(shè)置“TextBox”文本控件數(shù)組的Visible屬性為T(mén)rue,使文本框可見(jiàn)。最后對(duì)文本框控件數(shù)組的Text屬性賦值,分別為“歡”、“迎”、“進(jìn)”、“入”、“VB”、“世”、“界”、“!”。
(4)運(yùn)用End Sub語(yǔ)句關(guān)閉當(dāng)前過(guò)程。
1.2 數(shù)據(jù)類(lèi)型
上一節(jié)介紹了標(biāo)識(shí)符,了解了標(biāo)識(shí)符的命名規(guī)則和VB中的保留字,對(duì)于保留字,希望讀者在運(yùn)用的過(guò)程中自己掌握。同時(shí)在上一節(jié)中,使用標(biāo)識(shí)符定義整型變量,這里的“整型”就是數(shù)據(jù)類(lèi)型。定義變量時(shí),必須有一定的數(shù)據(jù)類(lèi)型與之對(duì)應(yīng)。本節(jié)主要介紹數(shù)據(jù)類(lèi)型,通過(guò)實(shí)例的介紹使讀者掌握各種數(shù)據(jù)類(lèi)型的運(yùn)用。
技術(shù)要點(diǎn)
本節(jié)主要運(yùn)用的技術(shù)有組合框控件ComboBox及其AddItem方法和Click事件、標(biāo)簽Label控件、文本框 TextBox 控件、Select Case 語(yǔ)句、數(shù)據(jù)類(lèi)型轉(zhuǎn)換函數(shù)。主要功能和用法如下:
●組合框控件ComboBox,主要用于從多種對(duì)象中逐個(gè)地選擇其中的一種對(duì)象。通常與Select Case語(yǔ)句配合使用,并且 Select Case語(yǔ)句出現(xiàn)在 ComboBox_ Click()事件中。
● AddItem方法,主要向組合框控件中添加各項(xiàng),即各個(gè)對(duì)象。
●組合框控件ComboBox的Click事件,單擊組合框時(shí),觸發(fā)該事件,主要完成選中某項(xiàng)時(shí)要完成的某種功能。
●標(biāo)簽Label控件,主要用于顯示文本。一般通過(guò)其Caption屬性顯示出來(lái)。
●文本框TextBox控件在前面已經(jīng)介紹過(guò)。
● Select Case語(yǔ)句在后面詳細(xì)介紹。
●數(shù)據(jù)類(lèi)型轉(zhuǎn)換函數(shù),主要用來(lái)在各數(shù)據(jù)類(lèi)型之間相互轉(zhuǎn)換。本實(shí)例中運(yùn)用的轉(zhuǎn)換函數(shù)有:CBool、CByte、CDate、CDbl、CInt、CLng和CStr,這些運(yùn)用轉(zhuǎn)換函數(shù)的轉(zhuǎn)換方式都是顯示轉(zhuǎn)換。
說(shuō)明:其他幾種類(lèi)型的數(shù)據(jù)也有對(duì)應(yīng)的數(shù)據(jù)類(lèi)型轉(zhuǎn)換函數(shù),如 CCur轉(zhuǎn)換為貨幣型, CVar轉(zhuǎn)換為可變型,CVErr轉(zhuǎn)換為Error類(lèi)型,但是這些轉(zhuǎn)換函數(shù)只適用于VB7.0以下的版本。
實(shí)現(xiàn)代碼
Private Sub CmbNumType_Click() Dim i As Single '定義單精度變量i i = 3.1415 '給變量i賦值為3.1415 Select Case CmbNumType.ListIndex 'Select Case語(yǔ)句 Case 0 TxtShow.Text = CInt(i) '顯示整型數(shù)據(jù) LabType.Caption = "數(shù)據(jù)類(lèi)型為:" & "Integer" '顯示類(lèi)型 Case 1 TxtShow.Text = CLng(i) '顯示長(zhǎng)整型數(shù)據(jù) LabType.Caption = "數(shù)據(jù)類(lèi)型為:" & "Long" '顯示類(lèi)型 Case 2 TxtShow.Text = I '顯示單精度浮點(diǎn)型數(shù)據(jù) LabType.Caption = "數(shù)據(jù)類(lèi)型為:" & "Single" '顯示類(lèi)型 Case 3 TxtShow.Text = CDbl(i) '顯示雙精度浮點(diǎn)型數(shù)據(jù) LabType.Caption = "數(shù)據(jù)類(lèi)型為:" & "Double" '顯示類(lèi)型 Case 4 TxtShow.Text = CByte(i) '顯示字節(jié)型數(shù)據(jù) LabType.Caption = "數(shù)據(jù)類(lèi)型為:" & "Byte" '顯示類(lèi)型 Case 5 TxtShow.Text = CStr(i) '顯示字符型數(shù)據(jù) LabType.Caption = "數(shù)據(jù)類(lèi)型為:" & "String" '顯示類(lèi)型 Case 6 TxtShow.Text = CBool(i) '顯示布爾型數(shù)據(jù) LabType.Caption = "數(shù)據(jù)類(lèi)型為:" & "Boolean" '顯示類(lèi)型 Case 7 TxtShow.Text = CDate(i) '顯示日期型數(shù)據(jù) LabType.Caption = "數(shù)據(jù)類(lèi)型為:" & "Date" '顯示類(lèi)型 End Select End Sub '初始化,給"CmbNumType"組合框賦值 Private Sub Form_Load() CmbNumType.AddItem "整型" '給"CmbNumType"組合框添加"整型"項(xiàng) CmbNumType.AddItem "長(zhǎng)整型" '給"CmbNumType"組合框添加"長(zhǎng)整型"項(xiàng) CmbNumType.AddItem "單精度浮點(diǎn)型" '給"CmbNumType"組合框添加"單精度浮點(diǎn)型"項(xiàng) CmbNumType.AddItem "雙精度浮點(diǎn)型" '給"CmbNumType"組合框添加"雙精度浮點(diǎn)型"項(xiàng) CmbNumType.AddItem "字節(jié)型" '給"CmbNumType"組合框添加"字節(jié)型"項(xiàng) CmbNumType.AddItem "字符型" '給"CmbNumType"組合框添加"字符型"項(xiàng) CmbNumType.AddItem "布爾型" '給"CmbNumType"組合框添加"布爾型"項(xiàng) CmbNumType.AddItem "日期型" '給"CmbNumType"組合框添加"日期型"項(xiàng) End Sub
按Ctrl+S快捷鍵保存工程,然后按F5鍵運(yùn)行工程。當(dāng)選擇組合框中的“整型”選項(xiàng)時(shí),運(yùn)行結(jié)果如圖1.5所示。當(dāng)選擇組合框中的“字符型”選項(xiàng)時(shí),運(yùn)行結(jié)果如圖1.6所示。當(dāng)選擇組合框中的“布爾型”選項(xiàng)時(shí),運(yùn)行結(jié)果如圖1.7所示。當(dāng)選擇組合框中的“日期型”選項(xiàng)時(shí),運(yùn)行結(jié)果如圖1.8所示。

圖1.5 數(shù)據(jù)類(lèi)型為整型的運(yùn)行圖

圖1.6 數(shù)據(jù)類(lèi)型為字符型的運(yùn)行圖

圖1.7 數(shù)據(jù)類(lèi)型為布爾型的運(yùn)行圖

圖1.8 數(shù)據(jù)類(lèi)型為日期型的運(yùn)行圖
源代碼解讀
(1)代碼在Form_ Load()事件中運(yùn)用組合框的AddItem方法初始化組合框控件。添加數(shù)據(jù)類(lèi)型分別為“整型”、“長(zhǎng)整型”、“單精度浮點(diǎn)數(shù)”、“雙精度浮點(diǎn)數(shù)”、“字節(jié)型”、“字符型”、“布爾型”和“日期型”。除此之外,數(shù)據(jù)類(lèi)型還有貨幣型(Currency)、可變型(Variant)和對(duì)象型(Object),這幾種類(lèi)型在編程過(guò)程中不常用,所以只作為了解。
(2)當(dāng)單擊“CmbNumType”組合框時(shí),就觸發(fā)CmbNumType_ Click()事件。在該事件中完成的操作主要是根據(jù)選擇的數(shù)據(jù)類(lèi)型顯示最終的數(shù)據(jù)和所選擇的數(shù)據(jù)類(lèi)型。主要通過(guò)Select Case語(yǔ)句,根據(jù) CmbNumType的 ListIndex屬性確定選擇的數(shù)據(jù)類(lèi)型。然后運(yùn)用“TxtShow”文本框顯示該數(shù)據(jù)類(lèi)型下的數(shù)據(jù),并通過(guò)“LabType”標(biāo)簽顯示所選擇的數(shù)據(jù)類(lèi)型。
1.3 常量和變量
上一節(jié)中介紹了數(shù)據(jù)類(lèi)型的種類(lèi)和各數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換函數(shù),讀者可以對(duì)數(shù)據(jù)類(lèi)型有更深入的認(rèn)識(shí)。數(shù)據(jù)類(lèi)型的選擇通常與常量和變量緊密相連,定義一個(gè)常量,要知道該常量的數(shù)據(jù)類(lèi)型;同樣,定義變量的同時(shí),要賦予該變量數(shù)據(jù)類(lèi)型。本節(jié)來(lái)介紹一下常量和變量的有關(guān)知識(shí)。
技術(shù)要點(diǎn)
本節(jié)使用的主要技術(shù)是常量和變量的定義,主要用法如下:
●常量的定義分為系統(tǒng)內(nèi)部定義和用戶定義兩種。系統(tǒng)內(nèi)部定義的常量是由VB和控件提供的,在代碼中可以直接使用;在編程過(guò)程中應(yīng)該注意的是定義常量。
●變量的定義,也稱(chēng)作變量的聲明,在使用一個(gè)變量之前必須提前聲明變量,變量的定義根據(jù)變量的類(lèi)型進(jìn)行定義,即不同的使用范圍聲明方式也不同。
用戶定義常量使用Const語(yǔ)句來(lái)實(shí)現(xiàn),其主要語(yǔ)法為:
[Public|Private]Const 常量名[As數(shù)據(jù)類(lèi)型]=表達(dá)式
其中,Public和Private參數(shù)注明常量的適用范圍,Public表示常量為全局的,Private表示變量為局部的,這兩個(gè)參數(shù)都是可選的;“常量名”參數(shù)就是給常量命名,命名規(guī)則與標(biāo)識(shí)符的命名規(guī)則一樣;“數(shù)據(jù)類(lèi)型”表示常量的數(shù)據(jù)類(lèi)型,一般可以省略,這時(shí)由后面的“表達(dá)式”參數(shù)來(lái)指明常量的數(shù)據(jù)類(lèi)型。表達(dá)式可以是數(shù)值型常量、字符型常量、布爾型常量和日期型常量,也可以是由這幾種常量連同運(yùn)算符組成的表達(dá)式。
變量的種類(lèi)有普通局部變量、靜態(tài)局部變量、模塊變量和全局變量。這些變量的主要聲明語(yǔ)法分別如下:
Dim 變量名[As數(shù)據(jù)類(lèi)型名] Static變量名[As數(shù)據(jù)類(lèi)型名] Private變量名[As數(shù)據(jù)類(lèi)型名] Public變量名[As數(shù)據(jù)類(lèi)型名]
說(shuō)明:這四種聲明方式中,最常用的聲明方式是第一種。當(dāng)變量聲明為全局變量時(shí),要注意變量名的命名應(yīng)盡量長(zhǎng),最好具有一定的意義,防止變量的重復(fù)聲明,造成沖突。
實(shí)現(xiàn)代碼
Const t = 2 '定義常量t作為第一個(gè)操作數(shù) Private Sub Form_Load() Dim i As Single '定義變量i,作為第二個(gè)操作數(shù) i = 1.56 '給變量賦值 TxtOne.Text = t '由文本框獲得第一個(gè)操作數(shù) TxtTwo.Text = I '由文本框獲得第二個(gè)操作數(shù) TxtResult.Text = TxtOne.Text * TxtTwo.Text '計(jì)算結(jié)果,并用文本框顯示出來(lái) End Sub
保存工程并運(yùn)行工程。單擊啟動(dòng)按鈕后,程序的運(yùn)行結(jié)果如圖1.9所示。

圖1.9 程序運(yùn)行結(jié)果圖
源代碼解讀
(1)首先定義常量t并賦值為2,這樣常量默認(rèn)為整型。給常量賦值之后,在后面代碼中就不能再重新賦值,否則運(yùn)行工程時(shí),會(huì)出現(xiàn)如圖1.10所示的提示窗口。

圖1.10 重復(fù)給常量賦值出現(xiàn)的提示框
(2)在Form_ Load()事件中,首先定義變量i,然后給變量i賦值。這里給i賦值之后可以在后面的代碼中再次給i賦值,但是文本框獲得的是變量i的最終賦值。例如,在語(yǔ)句i=1.56后,再添加語(yǔ)句i=1.6,那么運(yùn)行結(jié)果如圖1.11所示。

圖1.11 再次給變量定義時(shí)出現(xiàn)的界面圖
(3)由文本框獲得兩個(gè)操作數(shù)之后,就可以計(jì)算兩個(gè)操作數(shù)的乘積,最終結(jié)果由TxtResult控件顯示出來(lái)。
說(shuō)明:這里的結(jié)果為單精度浮點(diǎn)數(shù),出現(xiàn)了數(shù)據(jù)類(lèi)型的隱式轉(zhuǎn)換,當(dāng)一個(gè)整型量和一個(gè)單精度浮點(diǎn)數(shù)進(jìn)行運(yùn)算時(shí),整型自動(dòng)轉(zhuǎn)變?yōu)閱尉雀↑c(diǎn)數(shù)參與運(yùn)算,結(jié)果也是單精度浮點(diǎn)數(shù)。
1.4 運(yùn)算符
在上一節(jié)中介紹了常量和變量的定義與應(yīng)用,其中需要讀者了解的內(nèi)容除了常量和變量的命名規(guī)則之外,還要注意常量和變量的適用范圍,這樣才能在定義變量和常量時(shí)做到有的放矢。另外,在上一節(jié)實(shí)例中提到了兩個(gè)操作數(shù)的乘積,這里的乘法就是一種運(yùn)算符。在VB中,運(yùn)算符有多種類(lèi)型,本節(jié)就詳細(xì)介紹幾種運(yùn)算符的運(yùn)用實(shí)例,即運(yùn)用多種運(yùn)算符進(jìn)行相應(yīng)表達(dá)式的計(jì)算。
技術(shù)要點(diǎn)
本節(jié)使用的主要技術(shù)是運(yùn)算符的使用。運(yùn)算符主要運(yùn)用在表達(dá)式中,代表某種運(yùn)算功能的符號(hào)。使用運(yùn)算符之前,首先應(yīng)該清楚運(yùn)算符的分類(lèi),運(yùn)算符大致可以分為四種:賦值運(yùn)算符、數(shù)學(xué)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符。其中最常用的是賦值運(yùn)算符“=”,其主要語(yǔ)法為:
變量=值
其中,變量就是聲明過(guò)的常量或變量名,值就是對(duì)前面變量的賦值。
●數(shù)學(xué)運(yùn)算符主要是為了進(jìn)行數(shù)學(xué)運(yùn)算,在本實(shí)例中用到的數(shù)學(xué)運(yùn)算符有“加法運(yùn)算符+”、“乘法運(yùn)算符*”、“除法運(yùn)算符/”、“整除運(yùn)算符 \”、“求模運(yùn)算符 Mod”,除此之外,數(shù)學(xué)運(yùn)算符還有“減法運(yùn)算符-”、“指數(shù)運(yùn)算符^”、“連接字符串運(yùn)算符&”。
●關(guān)系運(yùn)算符主要用來(lái)確定兩個(gè)表達(dá)式之間的關(guān)系。在本實(shí)例中用到的關(guān)系運(yùn)算符有“相等運(yùn)算符=”、“大于運(yùn)算符>”,除此之外,關(guān)系運(yùn)算符還有“不等于運(yùn)算符<>”、“小于運(yùn)算符<”、“大于等于運(yùn)算符> =”、“小于等于運(yùn)算符< =”、“字符串模式匹配運(yùn)算符Like”、“對(duì)象一致比較運(yùn)算符Is”。
●邏輯運(yùn)算符主要用于判斷表達(dá)式之間的邏輯關(guān)系,表達(dá)式可以為一個(gè)、兩個(gè)或多個(gè)。在本實(shí)例中用到的邏輯運(yùn)算符是“或運(yùn)算符Or”,除此之外,邏輯運(yùn)算符還有“取反運(yùn)算符Not”、“與運(yùn)算符And”、“異或運(yùn)算符Xor”、“等價(jià)運(yùn)算符Eqv”、“蘊(yùn)含運(yùn)算符Imp”。
說(shuō)明:運(yùn)用這些運(yùn)算符時(shí)要注意運(yùn)算符之間的優(yōu)先關(guān)系。
實(shí)現(xiàn)代碼
Const x = 20 '定義常量x作為第一個(gè)操作數(shù) Const y = 3 '定義常量y作為第二個(gè)操作數(shù) Private Sub CmbYSF_Click() Text1.Text = x '獲得第一個(gè)操作數(shù) Text2.Text = y '獲得第二個(gè)操作數(shù) Select Case CmbYSF.ListIndex Case 0 '加法的情況 TxtResult.Text = CInt(Text1.Text)+ CInt(Text2.Text) '加法運(yùn)算表達(dá)式 Label1.Caption = " +" '在表達(dá)式中顯示運(yùn)算符 LabShow.Caption = "加法運(yùn)算符" '顯示選中的運(yùn)算符 Case 1 '乘法的情況 TxtResult.Text = Text1.Text * Text2.Text '乘法運(yùn)算表達(dá)式 Label1.Caption = "*" '在表達(dá)式中顯示運(yùn)算符 LabShow.Caption = "乘法運(yùn)算符" '顯示選中的運(yùn)算符 Case 2 '除法的情況 TxtResult.Text = Text1.Text/Text2.Text '除法運(yùn)算表達(dá)式 Label1.Caption = "/" '在表達(dá)式中顯示運(yùn)算符 LabShow.Caption = "除法運(yùn)算符" '顯示選中的運(yùn)算符 Case 3 '整除的情況 TxtResult.Text = Text1.Text \ Text2.Text '整除運(yùn)算表達(dá)式 Label1.Caption = "\" '在表達(dá)式中顯示運(yùn)算符 LabShow.Caption = "整除運(yùn)算符" '顯示選中的運(yùn)算符 Case 4 '求模的情況 TxtResult.Text = Text1.Text Mod Text2.Text '求模運(yùn)算表達(dá)式 Label1.Caption = "Mod" '在表達(dá)式中顯示運(yùn)算符 LabShow.Caption = "求模運(yùn)算符" '顯示選中的運(yùn)算符 Case 5 '相等的情況 TxtResult.Text = CInt(Text1.Text)= CInt(Text2.Text) '相等運(yùn)算表達(dá)式 Label1.Caption = " =" '在表達(dá)式中顯示運(yùn)算符 LabShow.Caption = "相等運(yùn)算符" '顯示選中的運(yùn)算符 Case 6 '大于的情況 TxtResult.Text = CInt(Text1.Text)> CInt(Text2.Text) '大于運(yùn)算表達(dá)式 Label1.Caption =" >" '在表達(dá)式中顯示運(yùn)算符 LabShow.Caption = "大于運(yùn)算符" '顯示選中的運(yùn)算符 Case 7 '或運(yùn)算的情況 TxtResult.Text = Text1.Text Or Text2.Text '或運(yùn)算表達(dá)式 Label1.Caption = "Or" '在表達(dá)式中顯示運(yùn)算符 LabShow.Caption = "或運(yùn)算符" '顯示選中的運(yùn)算符 End Select End Sub '初始化給組合框中添加運(yùn)算符 Private Sub Form_Load() CmbYSF.AddItem " +" '添加加法運(yùn)算符 CmbYSF.AddItem "*" '添加乘法運(yùn)算符 CmbYSF.AddItem "/" '添加除法運(yùn)算符 CmbYSF.AddItem "\" '添加整除運(yùn)算符 CmbYSF.AddItem "Mod" '添加求模運(yùn)算符 CmbYSF.AddItem " =" '添加相等運(yùn)算符 CmbYSF.AddItem " >" '添加大于運(yùn)算符 CmbYSF.AddItem "Or" '添加或運(yùn)算符 End Sub
保存工程并運(yùn)行工程。當(dāng)選擇組合框中的“+”選項(xiàng)時(shí),運(yùn)行結(jié)果如圖1.12所示。當(dāng)選擇組合框中的“Mod”選項(xiàng)時(shí),運(yùn)行結(jié)果如圖1.13所示。當(dāng)選擇組合框中的“=”選項(xiàng)時(shí),運(yùn)行結(jié)果如圖1.14所示。

圖1.12 加法運(yùn)算結(jié)果圖

圖1.13 求模運(yùn)算結(jié)果圖

圖1.14 相等運(yùn)算結(jié)果圖
源代碼解讀
(1)代碼首先定義兩個(gè)常量x、y,分別賦值為20、3。然后,在Form_ Load()事件中初始化“CmbYSF”組合框。運(yùn)用CmbYSF的AddItem方法加載各運(yùn)算符:“+”、“*”、“/”、“\”、“Mod”、“=”、“>”、“Or”。
(2)單擊“CmbYSF”組合框時(shí),就觸發(fā)CmbYSF_ Click()事件。在該事件中,首先由“Text1”文本框和“Text2”文本框獲得兩個(gè)常量作為操作數(shù)。然后運(yùn)用Select Case語(yǔ)句,根據(jù)CmbYSF的ListIndex屬性,選擇不同的運(yùn)算符進(jìn)行運(yùn)算。由“TxtResult”文本框的Text屬性,顯示最終的計(jì)算結(jié)果,并由“Label1”標(biāo)簽顯示選擇的運(yùn)算符。
1.5 表達(dá)式
在上一節(jié)中介紹了運(yùn)算符的使用,通過(guò)學(xué)習(xí),相信讀者對(duì)運(yùn)算符的運(yùn)用有更清晰的認(rèn)識(shí),并已理解各類(lèi)運(yùn)算符之間的優(yōu)先關(guān)系。運(yùn)算符的運(yùn)用往往與表達(dá)式結(jié)合在一起,即運(yùn)算符是表達(dá)式之間的某種運(yùn)算功能。因此,本節(jié)就介紹表達(dá)式的有關(guān)知識(shí),希望通過(guò)本節(jié)的介紹,讀者能夠更深入地理解表達(dá)式的含義及其應(yīng)用。
技術(shù)要點(diǎn)
本節(jié)實(shí)例中主要用到的技術(shù)是組合框ComboBox的嵌套使用及Clear方法,表達(dá)式功能和用法如下:
●組合框的嵌套使用,即在單擊一個(gè)組合框的Click事件中觸發(fā)另外一個(gè)組合框的事件,在后面章節(jié)中詳細(xì)介紹。
●組合框控件的Clear方法,主要作用是清空組合框中加載的內(nèi)容,這主要是為了進(jìn)一步在組合框中加載內(nèi)容。
●表達(dá)式的使用,主要是為了參與某種運(yùn)算從而完成某種功能。
使用表達(dá)式應(yīng)先了解表達(dá)式的種類(lèi),表達(dá)式有三種:算術(shù)表達(dá)式、關(guān)系表達(dá)式和邏輯表達(dá)式。
●算術(shù)表達(dá)式是由變量、常量或者函數(shù)與算術(shù)運(yùn)算符組合而成的式子。主要運(yùn)用在算術(shù)運(yùn)算中。
●關(guān)系表達(dá)式是由操作數(shù)和關(guān)系運(yùn)算符組合而成的式子,主要運(yùn)用在If語(yǔ)句中。
●邏輯表達(dá)式是由操作數(shù)和邏輯運(yùn)算符組合而成的式子。
注意:在運(yùn)用表達(dá)式時(shí),要注意書(shū)寫(xiě)方式,否則可能出現(xiàn)錯(cuò)誤。
實(shí)現(xiàn)代碼
Const x = 30,y = 7 '定義常量x,y Private Sub CmbExpr_Click() TxtOne.Text = x '獲得第一個(gè)操作數(shù) TxtTwo.Text = y '獲得第二個(gè)操作數(shù) Select Case CmbExpr.ListIndex Case 0 '算術(shù)表達(dá)式的情況 CmbOper.Clear '對(duì)組合框中的內(nèi)容進(jìn)行清空 CmbOper.AddItem " +" '在"CmbOper"組合框中添加加法運(yùn)算符 CmbOper.AddItem " -" '在"CmbOper"組合框中添加減法運(yùn)算符 CmbOper.AddItem "*" '在"CmbOper"組合框中添加乘法運(yùn)算符 CmbOper.AddItem "/" '在"CmbOper"組合框中添加除法運(yùn)算符 CmbOper.AddItem "\" '在"CmbOper"組合框中添加整除運(yùn)算符 CmbOper.AddItem "Mod" '在"CmbOper"組合框中添加求模運(yùn)算符 CmbOper.AddItem "&" '在"CmbOper"組合框中添加連接運(yùn)算符 CmbOper.AddItem "^" '在"CmbOper"組合框中添加指數(shù)運(yùn)算符 Case 1 '關(guān)系表達(dá)式的情況 CmbOper.Clear '對(duì)組合框中的內(nèi)容進(jìn)行清空 CmbOper.AddItem " =" '在"CmbOper"組合框中添加相等運(yùn)算符 CmbOper.AddItem " < >" '在"CmbOper"組合框中添加不等于運(yùn)算符 CmbOper.AddItem " >" '在"CmbOper"組合框中添加大于運(yùn)算符 CmbOper.AddItem " <" '在"CmbOper"組合框中添加小于運(yùn)算符 CmbOper.AddItem " > =" '在"CmbOper"組合框中添加大于等于運(yùn)算符 CmbOper.AddItem " < =" '在"CmbOper"組合框中添加小于等于運(yùn)算符 CmbOper.AddItem "Like" '在"CmbOper"組合框中添加模式匹配運(yùn)算符 Case 2 '邏輯表達(dá)式的情況 CmbOper.Clear '對(duì)組合框中的內(nèi)容進(jìn)行清空 CmbOper.AddItem "Not" '在"CmbOper"組合框中添加取反運(yùn)算符 CmbOper.AddItem "And" '在"CmbOper"組合框中添加與運(yùn)算符 CmbOper.AddItem "Or" '在"CmbOper"組合框中添加或運(yùn)算符 CmbOper.AddItem "Xor" '在"CmbOper"組合框中添加異或運(yùn)算符 CmbOper.AddItem "Eqv" '在"CmbOper"組合框中添加等價(jià)運(yùn)算符 CmbOper.AddItem "Imp" '在"CmbOper"組合框中添加蘊(yùn)含等運(yùn)算符 End Select End Sub Private Sub CmbOper_Click() Select Case CmbExpr.ListIndex Case 0 Select Case CmbOper.ListIndex Case 0 '加法運(yùn)算的情況 TxtResult.Text = CInt(TxtOne.Text)+ CInt(TxtTwo.Text) '加法運(yùn)算 LabShow.Caption = "算術(shù)表達(dá)式中的加法運(yùn)算" '運(yùn)算類(lèi)型 Case 1 '減法運(yùn)算的情況 TxtResult.Text = CInt(TxtOne.Text)- CInt(TxtTwo.Text) '減法運(yùn)算 LabShow.Caption = "算術(shù)表達(dá)式中的減法運(yùn)算" '運(yùn)算類(lèi)型 Case 2 '乘法運(yùn)算的情況 TxtResult.Text = CInt(TxtOne.Text)* CInt(TxtTwo.Text) '乘法運(yùn)算 LabShow.Caption = "算術(shù)表達(dá)式中的乘法運(yùn)算" '運(yùn)算類(lèi)型 Case 3 '除法運(yùn)算的情況 TxtResult.Text = CInt(TxtOne.Text)/ CInt(TxtTwo.Text) '除法運(yùn)算 LabShow.Caption = "算術(shù)表達(dá)式中的除法運(yùn)算" '運(yùn)算類(lèi)型 Case 4 '整除運(yùn)算的情況 TxtResult.Text = CInt(TxtOne.Text)\ CInt(TxtTwo.Text) '整除運(yùn)算 LabShow.Caption = "算術(shù)表達(dá)式中的整除運(yùn)算" '運(yùn)算類(lèi)型 Case 5 '求模運(yùn)算的情況 TxtResult.Text = CInt(TxtOne.Text)Mod CInt(TxtTwo.Text) '求模運(yùn)算 LabShow.Caption = "算術(shù)表達(dá)式中的求模運(yùn)算" '運(yùn)算類(lèi)型 Case 6 '連接運(yùn)算的情況 TxtResult.Text = TxtOne.Text & TxtTwo.Text '連接運(yùn)算 LabShow.Caption = "算術(shù)表達(dá)式中的連接運(yùn)算" '運(yùn)算類(lèi)型 Case 7 '指數(shù)運(yùn)算的情況 TxtResult.Text = CInt(TxtOne.Text)^ CInt(TxtTwo.Text) '指數(shù)運(yùn)算 LabShow.Caption = "算術(shù)表達(dá)式中的指數(shù)運(yùn)算" '運(yùn)算類(lèi)型 End Select Case 1 Select Case CmbOper.ListIndex Case 0 '相等比較運(yùn)算的情況 TxtResult.Text=CInt(TxtOne.Text)=CInt(TxtTwo.Text) '相等比較運(yùn)算 LabShow.Caption = "關(guān)系表達(dá)式中的相等比較運(yùn)算" '運(yùn)算類(lèi)型 Case 1 '不等于比較運(yùn)算的情況 TxtResult.Text=CInt(TxtOne.Text)< >CInt(TxtTwo.Text) '不等于比較運(yùn)算 LabShow.Caption = "關(guān)系表達(dá)式中的不等于比較運(yùn)算" '運(yùn)算類(lèi)型 Case 2 '大于比較運(yùn)算的情況 TxtResult.Text=CInt(TxtOne.Text)>CInt(TxtTwo.Text) '大于比較運(yùn)算 LabShow.Caption = "關(guān)系表達(dá)式中的大于比較運(yùn)算" '運(yùn)算類(lèi)型 Case 3 '小于比較運(yùn)算的情況 TxtResult.Text=CInt(TxtOne.Text)<CInt(TxtTwo.Text) '小于比較運(yùn)算 LabShow.Caption = "關(guān)系表達(dá)式中的小于比較運(yùn)算" '運(yùn)算類(lèi)型 Case 4 '大于比較運(yùn)算的情況 TxtResult.Text=CInt(TxtOne.Text)> =CInt(TxtTwo.Text) '大于等于比較運(yùn)算 LabShow.Caption = "關(guān)系表達(dá)式中的大于等于比較運(yùn)算" '運(yùn)算類(lèi)型 Case 5 '小于比較運(yùn)算的情況 TxtResult.Text=CInt(TxtOne.Text)< =CInt(TxtTwo.Text) '小于等于比較運(yùn)算 LabShow.Caption = "關(guān)系表達(dá)式中的小于等于比較運(yùn)算" '運(yùn)算類(lèi)型 Case 6 '模式匹配運(yùn)算的情況 TxtResult.Text = TxtOne.Text Like TxtTwo.Text '模式匹配運(yùn)算 LabShow.Caption = "關(guān)系表達(dá)式中的模式匹配運(yùn)算" '運(yùn)算類(lèi)型 End Select Case 2 Select Case CmbOper.ListIndex Case 0 '取反運(yùn)算的情況 TxtResult.Text = Not CInt(TxtTwo.Text) '取反運(yùn)算 LabShow.Caption = "邏輯表達(dá)式中的取反運(yùn)算" '顯示運(yùn)算類(lèi)型 Case 1 '與運(yùn)算的情況 TxtResult.Text=CInt(TxtOne.Text)And CInt(TxtTwo.Text) '與運(yùn)算 LabShow.Caption = "邏輯表達(dá)式中的與運(yùn)算" '顯示運(yùn)算類(lèi)型 Case 2 '或運(yùn)算的情況 TxtResult.Text=CInt(TxtOne.Text)Or CInt(TxtTwo.Text) '或運(yùn)算 LabShow.Caption = "邏輯表達(dá)式中的或運(yùn)算" '顯示運(yùn)算類(lèi)型 Case 3 '異或運(yùn)算的情況 TxtResult.Text=CInt(TxtOne.Text)Xor CInt(TxtTwo.Text) '異或運(yùn)算 LabShow.Caption = "邏輯表達(dá)式中的異或運(yùn)算" '顯示運(yùn)算類(lèi)型 Case 4 '等價(jià)運(yùn)算的情況 TxtResult.Text=CInt(TxtOne.Text)Eqv CInt(TxtTwo.Text) '等價(jià)運(yùn)算 LabShow.Caption = "邏輯表達(dá)式中的等價(jià)運(yùn)算" '顯示運(yùn)算類(lèi)型 Case 5 '蘊(yùn)含運(yùn)算的情況 TxtResult.Text=CInt(TxtOne.Text)Imp CInt(TxtTwo.Text) '蘊(yùn)含運(yùn)算 LabShow.Caption = "邏輯表達(dá)式中的蘊(yùn)含運(yùn)算" '顯示運(yùn)算類(lèi)型 End Select End Select End Sub '初始化"CmbExpr"組合框,添加表達(dá)式類(lèi)型 Private Sub Form_Load() CmbExpr.AddItem "算術(shù)表達(dá)式" CmbExpr.AddItem "關(guān)系表達(dá)式" CmbExpr.AddItem "邏輯表達(dá)式" End Sub
保存工程并運(yùn)行工程。當(dāng)選擇組合框中的“+”選項(xiàng)時(shí),運(yùn)行結(jié)果如圖1.15所示。當(dāng)選擇組合框中的“-”選項(xiàng)時(shí),運(yùn)行結(jié)果如圖1.16所示。當(dāng)選擇組合框中的“*”選項(xiàng)時(shí),運(yùn)行結(jié)果如圖1.17所示。

圖1.15 加法運(yùn)算結(jié)果圖

圖1.16 減法運(yùn)算結(jié)果圖

圖1.17 乘法運(yùn)算結(jié)果圖
源代碼解讀
(1)代碼首先定義兩個(gè)常量x、y,并且分別賦值為30、7。這兩個(gè)常量分別作為表達(dá)式中的第一個(gè)和第二個(gè)操作數(shù)。
(2)在Form_ Load()事件中,主要對(duì)“CmbExpr”組合框進(jìn)行初始化。運(yùn)用控件的AddItem方法加載表達(dá)式類(lèi)型:“算術(shù)表達(dá)式”、“關(guān)系表達(dá)式”、“邏輯表達(dá)式”。當(dāng)單擊“CmbExpr”組合框時(shí),就會(huì)觸發(fā)CmbExpr_ Click()事件。
(3)在CmbExpr_ Click()事件中,執(zhí)行對(duì)“CmbOper”組合框的初始化。根據(jù)CmbExpr的ListIndex屬性,運(yùn)用CmbOper的AddItem屬性,對(duì)“CmbOper”組合框加載不同的內(nèi)容。
(4)當(dāng)CmbExpr中的內(nèi)容為算術(shù)表達(dá)式時(shí),需要加載算術(shù)運(yùn)算符:“+”、“-”、“*”、“/”、“\”、“Mod”、“&”、“^”。當(dāng)CmbExpr中的內(nèi)容為關(guān)系表達(dá)式時(shí),需要加載關(guān)系運(yùn)算符:“=”、“< >”、“>”、“<”、“> =”、“< =”、“Like”。當(dāng)CmbExpr中的內(nèi)容為邏輯表達(dá)式時(shí),需要加載邏輯運(yùn)算符:“Not”、“And”、“Or”、“Xor”、“Eqv”、“Imp”。另外,加載內(nèi)容之前要運(yùn)用CmbOper的Clear方法清空原來(lái)的內(nèi)容。
(5)當(dāng)單擊“CmbOper”組合框時(shí),就觸發(fā)CmbOper_ Click()事件。在CmbOper_ Click()事件中,根據(jù)CmbExpr的ListIndex屬性和CmbOper的ListIndex屬性進(jìn)行表達(dá)式的運(yùn)算,由程序可以看出共有21種運(yùn)算,這里不再一一解釋。
- PaaS程序設(shè)計(jì)
- Developing Mobile Web ArcGIS Applications
- Apache Hive Essentials
- Learn Swift by Building Applications
- 大模型RAG實(shí)戰(zhàn):RAG原理、應(yīng)用與系統(tǒng)構(gòu)建
- C語(yǔ)言程序設(shè)計(jì)
- Mastering Android Game Development
- C語(yǔ)言程序設(shè)計(jì)
- Corona SDK Mobile Game Development:Beginner's Guide(Second Edition)
- Oracle Data Guard 11gR2 Administration Beginner's Guide
- Java程序設(shè)計(jì)教程
- XML程序設(shè)計(jì)(第二版)
- ArcPy and ArcGIS(Second Edition)
- The Applied Data Science Workshop
- JavaScript編程精解(原書(shū)第3版)