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

  • Visual Basic實例精通
  • 柴相花等編著
  • 1038字
  • 2019-03-01 14:47:09

第2章 數組

第1章介紹了VB的語言基礎,對VB的標識符、常量、變量、數據類型等知識已經有所了解,這是VB編程的基礎。在VB中,除了上面提到的語言基礎之外,還有一種非常重要的VB語言基礎——數組,數組是一種存儲多個元素的數據結構,數組中每個元素具有相同的數據類型,并且按照一定的順序排列。數組在編程中主要運用在矩陣運算、表格的輸出、數據排序等方面。數組的運用在很大程度上方便了書寫過程,但也增加了出錯的幾率,因此在使用數組的過程中要特別注意,本章就是在這樣的基礎上介紹數組的相關知識。

2.1 一維數組應用

按照維數,數組可以分為一維數組和多維數組。首先介紹簡單的一維數組,顧名思義,這種數組只有一個維,即只有一個下標。本節運用實例來介紹一維數組的應用實例,即對輸入的數據序列進行排序。

技術要點

在本實例中主要用到了運用一維數組和For循環語句,主要功能和用法如下:

●一維數組,主要用來存放一系列的數據,存放的數據可以是任意數據類型。使用一維數組之前要先定義該數組。

● For循環語句主要是控制對數組的執行。詳細在下面章節介紹。

一維數組的主要語法為:

        [Public|Private]數組名(數組大小)As數組中元素類型

其中Public和Private參數主要限定數組的使用范圍,如果是Public,說明數組是全局數組;如果是Private,說明數組是局部數組;參數“數組名”,就是對數組的命名,命名規則與標識符的命名規則一樣;參數“數組大小”,對于固定數組來說,這個參數要求定義,并且數組大小=數組長度-1,這是因為數組的第一個元素的下標是0,對于動態數組,若參數實現的不確定,就不必設定,只有當確定之后才使用如下語法定義:

        ReDim 數組名(數組大小)

數組中的元素類型,表示數組中存儲的元素的數據類型,這些數據類型可以是任意的。

說明:對于數組的定義,最常用的是使用Dim語句,具體語法為:

        Dim 數組名(數組大小)As數組中元素類型

實現代碼

        Dim Arr(10)As Integer                                            '定義數組存放輸入的數據
        Private Sub CmdShow_Click()
            Dim i As Integer                                               '定義循環變量
            For i = 0 To 9                                                 '排序
                TxtShow.Text = TxtShow.Text & Arr(9 - i)&""           '顯示倒序結果
            Next i
        End Sub
        Private Sub Form_Load()
            Dim i As Integer                                               '定義循環變量
            For i = 0 To 9                                                 '循環輸入排序的數據序列
                Arr(i)=I                                                '給數組賦初始值
                TxtSource.Text = TxtSource.Text & Arr(i)&""           '顯示初始結果
            Next i
        End Sub

單擊工具欄中的保存按鈕,保存工程,然后單擊工具欄中的啟動按鈕,運行工程,程序的運行結果如圖2.1所示。

圖2.1 程序運行界面圖

單擊工具欄中的結束按鈕,或者單擊運行窗口的關閉按鈕,結束程序的運行。

源程序解讀

(1)代碼首先定義了一個數組名為Arr數組大小為9的一維數組Arr(9),并且數組中的元素類型是整型。

(2)在Form_ Load()事件中,運用For循環語句對數組賦初值,并且由“TxtSource”文本框顯示出來。當單擊“CmdShow”按鈕時,就觸發CmdShow_ Click()事件。

(3)在CmdShow_ Click()事件中,同樣運用For循環語句執行對數組中元素的倒序操作,并且結果由“TxtShow”文本框顯示出來。

2.2 從數組中刪除奇數元素

在上一節中簡單介紹了一維數組的運用,其中重點介紹了一維數組的定義方式。本節通過一個從數組中刪除奇數元素的實例繼續介紹一維數組的運用,其中將重點介紹數組的重定義方式。

技術要點

本實例中主要用到的技術是動態數組的定義和數組的重定義。主要功能和用法如下:

●動態數組,顧名思義,是指大小不確定的數組。于是在定義這類數組時不能像定義固定數組那樣指明數組的大小。主要使用Dim語句進行聲明。

●數組的重定義,就是對數組的重新定義。對于動態數組而言,開始數組的大小不確定,但是一旦在使用之前確定數組的大小,就要對數組使用ReDim語句重新聲明。

動態數組定義的具體語法如下:

        Dim 數組名()As數組中元素類型

盡管數組大小不確定,但是表示數組大小的“()”不能省略。數組重定義的具體語法為:

        ReDim 數組名(數組大小)As數組中元素類型

說明:數組重聲明中的的數組名應該與初始聲明動態數組時的數組名一樣。并且數組的重聲明除了對動態數組使用外,還可以對固定數組使用。

實現代碼

        Dim Arr()As Integer                                       '定義動態數組
        Private Sub Form_Load()
            Dim i As Integer                                        '定義循環變量
            ReDim Arr(7)As Integer                                '重新定義數組
            For i = 0 To 7
                Arr(i)=I                                         '給數組初始化
                TxtS.Text = TxtS.Text & Arr(i)&""              '顯示原始數組
            Next i
            For i = 0 To 3
                Arr(i)=Arr(2*i)                                '刪除數組中的奇數
                TxtShow.Text = TxtShow.Text & Arr(i)& " "      '顯示最終結果
            Next i
        End Sub

按Ctrl+S組合鍵保存工程,然后按F5鍵運行工程。單擊啟動按鈕后,程序的運行結果如圖2.2所示。

圖2.2 程序運行結果圖

源程序解讀

(1)代碼首先定義動態數組Arr(),數組中元素類型為整型。

(2)在Form_ Load()事件中,對數組重新聲明為Arr(7),即定義數組長度為8。

(3)接下來運用For循環語句對數組初始化,并且由“TxtS”文本框顯示初始數據。

(4)最后再次運用For循環語句,執行從數組中刪除奇數元素的操作,并由“TxtShow”文本框顯示最終結果。

2.3 二維數組的應用

本節介紹二維數組的應用實例,即矩陣的乘法,二維數組,顧名思義,有兩維,即有兩個下標。

技術要點

本實例運用的主要技術是二維數組的定義,框架Frame控件,文本框控件TextBox數組,主要功能和用法如下:

●二維數組的定義,即聲明二維數組,一般用來表示矩陣,由兩個坐標表示的圖表、圖形等。主要使用Dim語句進行。

●框架控件Frame一般用來作為其他控件的容器,主要使界面看起來比較整潔,在本實例中,Frame用作文本框控件的容器。

●文本框控件數組,主要是為了表示的方便而采用。

二維數組定義的具體語法為:

        Dim 數組名(下標1,下標2)As數組中元素的數據類型

其中,下標1表示二維數組中行的大小,即行長度-1;下標2表示二維數組中列的大小,即列長度-1。

實現代碼

        Dim ArrM(2,3)As Integer                                '定義M矩陣
        Dim ArrN(3,3)As Integer                                '定義N矩陣
        Dim ArrR(2,3)As Integer                                '定義結果矩陣
        Private Sub Form_Load()
            Dim i,j,k As Integer                                 '定義循環變量
            ArrM(0,0)= 3                                      '給M矩陣的第1個元素賦值
            ArrM(0,1)= 0                                      '給M矩陣的第2個元素賦值
            ArrM(0,2)= 0                                      '給M矩陣的第3個元素賦值
            ArrM(0,3)= 5                                      '給M矩陣的第4個元素賦值
            ArrM(1,0)= 0                                      '給M矩陣的第5個元素賦值
            ArrM(1,1)= -1                                     '給M矩陣的第6個元素賦值
            ArrM(1,2)= 0                                      '給M矩陣的第7個元素賦值
            ArrM(1,3)= 0                                                    '給M矩陣的第8個元素賦值
            ArrM(2,0)= 2                                                    '給M矩陣的第9個元素賦值
            ArrM(2,1)= 0                                                    '給M矩陣的第10個元素賦值
            ArrM(2,2)= 0                                                    '給M矩陣的第11個元素賦值
            ArrM(2,3)= 1                                                    '給M矩陣的第12個元素賦值
            ArrN(0,0)= 0                                                    '給N矩陣的第1個元素賦值
            ArrN(0,1)= 2                                                    '給N矩陣的第2個元素賦值
            ArrN(0,2)= 2                                                    '給N矩陣的第3個元素賦值
            ArrN(0,3)= 1                                                    '給N矩陣的第4個元素賦值
            ArrN(1,0)= 1                                                    '給N矩陣的第5個元素賦值
            ArrN(1,1)= 0                                                    '給N矩陣的第6個元素賦值
            ArrN(1,2)= 3                                                    '給N矩陣的第7個元素賦值
            ArrN(1,3)= 4                                                    '給N矩陣的第8個元素賦值
            ArrN(2,0)= -2                                                   '給N矩陣的第9個元素賦值
            ArrN(2,1)= 4                                                    '給N矩陣的第10個元素賦值
            ArrN(2,2)= -3                                                   '給N矩陣的第11個元素賦值
            ArrN(2,3)= 0                                                    '給N矩陣的第12個元素賦值
            ArrN(3,0)= 1                                                    '給N矩陣的第13個元素賦值
            ArrN(3,1)= 0                                                    '給N矩陣的第14個元素賦值
            ArrN(3,2)= -5                                                   '給N矩陣的第15個元素賦值
            ArrN(3,3)= 7                                                    '給N矩陣的第16個元素賦值
            For i = 0 To 3
                TxtM1(i).Text = ArrM(0,i)                                 '顯示M矩陣的第一行元素
                TxtM2(i).Text = ArrM(1,i)                                 '顯示M矩陣的第二行元素
                TxtM3(i).Text = ArrM(2,i)                                 '顯示M矩陣的第三行元素
                TxtN1(i).Text = ArrN(0,i)                                 '顯示N矩陣的第一行元素
                TxtN2(i).Text = ArrN(1,i)                                 '顯示N矩陣的第二行元素
                TxtN3(i).Text = ArrN(2,i)                                 '顯示N矩陣的第三行元素
                TxtN4(i).Text = ArrN(3,i)                                 '顯示N矩陣的第四行元素
            Next i
            For i = 0 To 2
                For j = 0 To 3
                    ArrR(i,j)= 0                                            '初始化結果矩陣
                    For k = 0 To 3
                      ArrR(i,j)=ArrR(i,j)+ArrM(i,k)*ArrN(k,j)      '計算矩陣乘積
                    Next k
                Next j
            Next i
            For i = 0 To 3
                TxtR1(i)= ArrR(0,i)                                       '顯示結果矩陣的第一行
                TxtR2(i)= ArrR(1,i)                                       '顯示結果矩陣的第二行
                TxtR3(i)= ArrR(2,i)                                       '顯示結果矩陣的第三行
            Next i
        End Sub

按Ctrl+S快捷鍵保存工程,然后按F5鍵運行工程。單擊啟動按鈕后,程序的運行結果如圖2.3所示。

圖2.3 程序運行結果界面圖

源程序解讀

(1)代碼首先定義了三個二維數組:ArrM(2,3),表示M矩陣;ArrN(3,3),表示N矩陣;ArrR(2,3)表示兩個矩陣乘積的結果矩陣。

(2)在Form_ Load()事件中,首先定義三個整型循環變量。然后分別給M矩陣和N矩陣賦初值。接下來分別由“TxtM”文本框數組和“TxtN”文本框數組顯示M矩陣和N矩陣的初始值。

(3)代碼的重心在于運用三重For循環執行兩個矩陣的乘積。三重循環分別由循環變量i,j,k控制,最終計算結果存儲在數組ArrR()中,并由“TxtR”文本框數組顯示出來。

2.4 Array給數組賦值

本節介紹另外一種給數組賦值的方法——Array函數的應用實例,即給數組賦值。

技術要點

本實例中主要運用的技術是Array函數和DBGrid控件,主要功能和用法如下:

● Array函數,主要對數組進行數據的輸入。

● DBGrid控件,是一種快速、便捷訪問數據庫的控件,在后面數據庫處理篇中,將詳細介紹此控件。

Array函數的具體語法為:

        數組名=Array(數值表)

其中,數值表中的數據就是數組中元素的值,數據之間用逗號隔開,并且這些數據可以具有不同的數據類型,因此,數組聲明時不需要定義數組中元素的數據類型,數組中的數據類型由數值表中的數據決定。這時定義數組的方法有如下兩種:

        Dim 數組名()As Variant
        Dim 數組名()

另外,由Array函數賦值的數組的下界是0,上界由數值表中的數據個數決定。

說明:Array函數對數組賦值后,在使用數組之前應該根據數值表中數據的個數對數據重新聲明,并且Array函數的賦值一般針對一維數組。

實現代碼

        Private Sub Form_Load()
            Dim ArrayWidth()                                      '定義每列的寬度值
            Dim ArrayTableHead()                                  '定義表頭數組
            Dim i As Integer                                         '定義循環變量
            '設置每一列的寬度值
            ArrayWidth = Array("1000","1000","500","500","2000","1000","2000","3000")
            '給表頭賦值
            ArrayTableHead = Array("學號","姓名","性別","年齡","籍貫","班級","學校","備注")
            ReDim Preserve ArrayWidth(7)                           '重新定義動態數組
            ReDim Preserve ArrayTableHead(7)                       '重新定義動態數組
            For i = 0 To 7
                MS1.ColWidth(i)= ArrayWidth(i)                  '設置列寬
                MS1.TextMatrix(0,i)= ArrayTableHead(i)         '表頭賦值
            Next
            MS1.Row = 1                                             '設置MS1的行數
            MS1.Cols = 8                                            '設置MS1的列數
            Adodc1.RecordSource = "select * from Table1"           '從數據庫中獲得表中的數據
            Adodc1.Refresh
            If Adodc1.Recordset.RecordCount > 0 Then
                Do While Adodc1.Recordset.EOF=False                  '將記錄顯示到MS1控件中
                  MS1.TextMatrix(MS1.Row,0)= Adodc1.Recordset.Fields("學號")
                  MS1.TextMatrix(MS1.Row,1)= Adodc1.Recordset.Fields("姓名")
                  MS1.TextMatrix(MS1.Row,2)= Adodc1.Recordset.Fields("性別")
                  MS1.TextMatrix(MS1.Row,3)= Adodc1.Recordset.Fields("年齡")
                  MS1.TextMatrix(MS1.Row,4)= Adodc1.Recordset.Fields("籍貫")
                  MS1.TextMatrix(MS1.Row,5)= Adodc1.Recordset.Fields("班級")
                  MS1.TextMatrix(MS1.Row,6)= Adodc1.Recordset.Fields("學校")
                  MS1.TextMatrix(MS1.Row,7)= Adodc1.Recordset.Fields("備注")
                  MS1.Row = MS1.Row + 1                             '列遞增
                  Adodc1.Recordset.MoveNext                         '指向下一條記錄
                Loop
            End If
        End Sub

按Ctrl+S組合鍵保存工程,然后按F5鍵運行工程。單擊啟動按鈕后,程序的運行結果如圖2.4所示。

圖2.4 程序運行結果界面圖

源程序解讀

(1)在Form_ Load()事件中,首先定義兩個一維數組ArrayWidth()和ArrayTableHead()。這兩個數組的大小和數組中元素的數據類型都不確定。

(2)接下來由Array函數給兩個數組賦初值。由此確定兩個數組的大小和數組中元素的數據類型。由此可以重新聲明兩個數組為:ArrayWidth(7)和ArrayTableHead(7)。

(3)最后由已知的數組設置DBGrid控件的列寬和表頭,并訪問數據庫,從數據庫中逐條得到記錄的信息。

2.5 使用二維數組分析圖表數據

在前面幾節中提到數組的運用除了矩陣的運算、數據排序外,還有就是對圖表的處理。本節介紹一個使用二維數組分析圖表數據的例子,從中希望讀者能夠了解一下圖表的知識。

技術要點

本節實例中主要使用的技術是MSChart控件及其ChartData屬性和Title屬性。主要功能和用法如下:

● MSChart控件是一種Active X控件,主要用來動態顯示隨機數據和數組,用于所有圖表類型。

● MSChart控件的ChartData屬性,主要用于設置繪制圖表的數據,返回值是一個二維數組。這個屬性是繪制圖表必須的屬性,也是MSChart控件的默認屬性。

● MsChart控件的Title屬性,用來設置繪制圖表的標題,一般情況下,在編程過程中,這個屬性要求被提供,但是對于圖表含義不要求明確給出時,可以省略。

實現代碼

        Private Sub Form_Load()
            Dim ArrSale(7,1)                             '定義二維數組
            ArrSale(0,0)= "一月"                       '給數組的第一列賦值
            ArrSale(1,0)= "二月"                         '給數組的第一列第一個元素賦值為"二月"
            ArrSale(2,0)= "三月"                         '給數組的第一列第二個元素賦值為"三月"
            ArrSale(3,0)= "四月"                         '給數組的第一列第三個元素賦值為"四月"
            ArrSale(4,0)= "五月"                         '給數組的第一列第四個元素賦值為"五月"
            ArrSale(5,0)= "六月"                         '給數組的第一列第五個元素賦值為"六月"
            ArrSale(6,0)= "七月"                         '給數組的第一列第六個元素賦值為"七月"
            ArrSale(7,0)="八月"                          '給數組的第一列第七個元素賦值為"八月"
            ArrSale(0,1)= 82000                            '給數組的第二列賦值
            ArrSale(1,1)= 45000                            '給數組的第二列第一個元素賦值為"45000"
            ArrSale(2,1)= 12800                            '給數組的第二列第一個元素賦值為"12800"
            ArrSale(3,1)= 32000                            '給數組的第二列第一個元素賦值為"32000"
            ArrSale(4,1)= 20000                            '給數組的第二列第一個元素賦值為"20000"
            ArrSale(5,1)= 66800                            '給數組的第二列第一個元素賦值為"66800"
            ArrSale(6,1)= 65000                            '給數組的第二列第一個元素賦值為"65000"
            ArrSale(7,1)= 78023                            '給數組的第二列第一個元素賦值為"78023"
            MSChart1.ChartData = ArrSale                      '給圖表賦值,分析銷售額
            MSChart1.Title = "一片天公司2008年八個月的銷售額分析(單位:萬元)"   '給圖表添加標題
        End Sub

按Ctrl+S組合鍵保存工程,然后按F5鍵運行工程。單擊啟動按鈕后,程序的運行結果如圖2.5所示。

圖2.5 程序運行結果圖

源程序解讀

(1)在Form_ Load()事件中,首先定義一個二維數組ArrSale(7,1),該數組中元素的數據類型不確定,即是Variant類型。

(2)接下來分別給二維數組的第一列和第二列賦值,由賦值的情況可以看出,第一列中元素的數據類型是字符串型,第二列中元素的數據類型是整型。

(3)最后把二維數組的值賦值給MSChart控件的ChartData屬性,獲得繪制圖表的數據。運用MSChart控件的Title屬性給繪制成的圖表命名。

2.6 利用控件數組設置形狀控件屬性的實例

在上一節中,分別介紹了一維和二維數組的運用實例,除此之外,在有的實例中還用到了控件數組,即由一些類型相同功能相近的控件組成的數組,與數組變量一樣,這些數組具有相同的名稱,通過下標區別控件數組中的元素。在編程過程中,使用控件數組可以節省系統內部資源,增加程序的可讀性。

技術要點

本實例中使用的主要技術是按鈕控件CommandButton數組及Click事件,形狀控件Shape數組和標簽控件Label數組。

按鈕控件數組、形狀控件數組和標簽控件數組都使用了控件數組,所以,可以統一介紹,運用控件數組首先要了解控件數組的創建方法,創建控件數組的方式大致有如下三種:

●與數組變量的定義類似,在代碼中給控件定義相同的控件名稱。

●最簡單的一種是在對象窗口中直接對要創建數組的控件進行復制、粘貼。

●最后一種是在控件的屬性窗口中把Index屬性的值設置為非Null數值。

創建控件數組之后就是控件數組的運用,運用控件數組一般使用For循環語句,根據控件數組的下標,即Index屬性分別對控件數組中的元素賦值。但是有時需要使用Select Case語句,如本例中的按鈕控件。

按鈕控件數組的Click事件,即CmdArray_ Click(Index As Integer),可以看出此處Click事件后面附加有參數 Index,這就是按鈕控件數組的下標,在本事件中,就使用了 Select Case語句,根據參數Index視不同情況執行不同的操作,執行操作的類別由Index的數值決定,在本實例中,Index有五種取值方式,分別為:0,執行對圖形形狀的設置;1,執行對圖形顏色的設置;2,執行對圖形填充形狀的設置;3,執行對圖形邊框形狀的設置;4,執行退出窗體的操作。

實現代碼

        Private Sub CmdArray_Click(Index As Integer)
        Select Case Index
        Case 0
            For i = 0 To 5
                Shape1(i).BorderStyle = I                        '設置Shape的BorderStyle屬性
                Label2(i).Caption = "BorderStyle=" &Str$(i)  '顯示設置屬性值
            Next i
        Case 1
            For i = 0 To 5
                Shape1(i).FillStyle = 1                          '設置Shape的FillStyle屬性
                Shape1(i).BackStyle = 1                          '設置Shape的BackStyle屬性
                Shape1(i).BackColor = QBColor(i)               '設置Shape的BackColor屬性
                Label2(i).Caption = "BackColor=" & Str$(i) '顯示設置屬性值
            Next i
        Case 2
            For i = 0 To 5
                Shape1(i).FillStyle = i + 2                      '設置Shape的FillStyle屬性
                Label2(i).Caption = "FillStyle=" & Str$(i + 2)      '顯示設置屬性值
            Next i
        Case 3
            For i = 0 To 5
                Shape1(i).Shape = i                                     '設置Shape的Shape屬性
                Label2(i).Caption = "Shape=" & Str$(i)              '顯示設置屬性值
            Next i
        Case 4
            Unload Me                                                     '退出系統
        End Select
        End Sub

按Ctrl+S組合鍵保存工程,然后按F5鍵運行工程。當單擊形狀設置按鈕時,程序運行結果如圖2.6所示。當單擊“顏色設置”按鈕時,程序運行結果如圖2.7所示。

圖2.6 形狀設置界面圖

圖2.7 顏色設置界面圖

源程序解讀

(1)運行工程,出現初始界面。這時當鼠標單擊按鈕控件數組CmdArray()時,觸發CmdArray_ Click(Index As Integer)事件。在該事件中,運用Select Case語句,根據參數Index的數值,分別執行對形狀圖形的操作。

(2)當單擊“形狀設置”按鈕時,Index=0,這時通過Shape數組的BorderStyle屬性設置圖形的形狀。當單擊“顏色設置”按鈕時,Index=1,這時通過Shape數組的BackColor屬性設置圖形的顏色。當單擊“填充線條設置”按鈕時,Index=2,這時通過Shape數組的FillStyle屬性設置圖形的填充形狀。當單擊“邊框形狀設置”按鈕時,Index=3,這時通過Shape數組的Shape屬性設置圖形的邊框形狀。當單擊“退出系統”按鈕時,Index=4,這時退出窗體。

(3)在執行圖形屬性設置的同時,使用“Label”標簽控件數組,在圖形的下面,顯示設置屬性的類別和設置的屬性值。這個功能主要通過Label的Caption屬性實現。

2.7 利用控件數組控制按鈕的增減

在上一節中介紹了控件數組的使用,主要介紹了控件數組的創建和運用方法,為了使得讀者對控件數組有更深入的理解,本節接著介紹控件數組的運用實例,即控件數組的動態創建。

技術要點

本節使用的主要技術是單選按鈕Option控件數組和工具欄ToolBar控件,主要功能和用法如下:

●單選按鈕Option控件,指的是多種選項同時存在時,一次只能選擇一個選項,執行一種操作,單選按鈕數組就是多個單選按鈕使用相同的名稱,只是下標是不同的組合。在本實例中,單選按鈕控件數組都使用 Option1 這個名稱,最大的下標是5。

●工具欄ToolBar控件,顧名思義,主要用來在窗體上創建工具欄,該控件中包含創建工具欄的ToolBarButton對象的集合,該控件是Active X的一種。

實現代碼

        Private Sub Option1_Click(Index As Integer)
            Shape1.Shape = Index                                              '設置形狀控件的形狀
            LabShow.Caption = "Shape=" & Inde                               '顯示形狀類型
        End Sub
        Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
            Static IndexNum As Integer                                          '定義單選按鈕的個數
            Select Case Button
                Case"增加單選按鈕"                                          '增加單選按鈕
                IndexNum = IndexNum + 1                                       '單選按鈕的數目增1
                If IndexNum > 5 Then
                  IndexNum = 5                                                '限定單選按鈕的數目為5
                  Exit Sub
                End If
                Load Option1(IndexNum)                                      '建立新的控件數組元素
                Option1(IndexNum).Top=Option1(IndexNum-1).Top+360         '指定控件位置
                Option1(IndexNum).Caption="Option("&IndexNum&")"      '指定選項按鈕控件的Caption屬性
                Option1(IndexNum).Visible = True                            '使選項按鈕可見
                Case"刪除單選按鈕"                                          '卸載單選按鈕
                    If IndexNum > 0 Then
                      Unload Option1(IndexNum)
                      IndexNum = IndexNum - 1                                 '單選按鈕的數目減1
                  End If
            End Select
        End Sub

按Ctrl+S組合鍵保存工程,然后按F5鍵運行工程。當單擊單選按鈕“Option(0)”時,程序的運行結果如圖2.8所示。當單擊“增加單選按鈕”按鈕并單擊單選按鈕“Option(2)”時,程序的運行結果如圖2.9所示。當單擊單選按鈕“Option(5)”時,程序的運行結果如圖2.10所示。當單擊“刪除單選按鈕”按鈕時,程序的運行結果如圖2.11所示。

圖2.8 單個單選按鈕的界面圖

圖2.9 增加4個并選中第三個單選按鈕的界面圖

圖2.10 增加5個并選中第六個單選按鈕的界面圖

圖2.11 刪除第六個單選按鈕的界面圖

源程序解讀

(1)在“Toolbar1”工具欄的Click事件,即Toolbar1_ ButtonClick(ByVal Button As MSComctlLib.Button)中,首先定義整型變量IndexNum,表示單選按鈕的個數。然后運用Select Case語句,根據參數Button的值,分別執行增加單選按鈕和刪除單選按鈕的操作。

(2)當單擊按鈕“增加單選按鈕”時,就執行Case "增加單選按鈕"對應的語句體。首先讓IndexNum加1,即單選按鈕的數目加1。接著使用If語句判斷IndexNum的大小是否超過5,若超過,仍然讓IndexNum=5,并退出過程;否則,使用Load語句加載一個單選按鈕,同時設置單選按鈕的屬性。

(3)當單擊按鈕“刪除單選按鈕”時,執行Case "刪除單選按鈕"對應的語句體。判斷IndexNum的大小是否大于0,即單選按鈕是否全部被刪除。如果大于0,則使用Unload語句卸載單選按鈕,并把IndexNum減1。

說明:Toolbar1_ ButtonClick(ByVal Button As MSComctlLib.Button)中參數Button的數據類型是按鈕對象類型。

主站蜘蛛池模板: 岫岩| 团风县| 大港区| 澄迈县| 铁岭县| 江陵县| 宝清县| 晋州市| 竹溪县| 赤峰市| 桂东县| 崇信县| 邵阳县| 库车县| 文山县| 阳原县| 东丽区| 车险| 建平县| 清流县| 彭水| 香格里拉县| 峨边| 临高县| 莆田市| 天柱县| 始兴县| 安康市| 巴林左旗| 昭通市| 平谷区| 崇明县| 聊城市| 洛阳市| 马关县| 南通市| 平湖市| 睢宁县| 铁岭市| 大埔区| 金溪县|