官术网_书友最值得收藏!

第一篇 基礎(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)算,這里不再一一解釋。

主站蜘蛛池模板: 宜春市| 吉林省| 精河县| 龙门县| 奇台县| 秦皇岛市| 仁化县| 云南省| 东乌| 富锦市| 萍乡市| 平江县| 儋州市| 安泽县| 长治市| 隆昌县| 微博| 西宁市| 宜川县| 永城市| 大同县| 渝北区| 安溪县| 龙井市| 台安县| 咸阳市| 南平市| 鞍山市| 东安县| 繁昌县| 石渠县| 德庆县| 云林县| 宜春市| 昌宁县| 扎兰屯市| 邓州市| 凯里市| 卢龙县| 永城市| 赤水市|