版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第七章第七章 數(shù)組和自定義數(shù)據(jù)類型數(shù)組和自定義數(shù)據(jù)類型數(shù)組的概念:數(shù)組的概念:數(shù)組并不是一種數(shù)據(jù)類型,而是數(shù)組并不是一種數(shù)據(jù)類型,而是一組相一組相同類型數(shù)據(jù)同類型數(shù)據(jù)的集合。用的集合。用一個(gè)統(tǒng)一一個(gè)統(tǒng)一的名字(的名字(數(shù)組名)數(shù)組名)代代表邏輯上相關(guān)的一批數(shù)據(jù),每個(gè)元素用表邏輯上相關(guān)的一批數(shù)據(jù),每個(gè)元素用下標(biāo)變量下標(biāo)變量來區(qū)來區(qū)分;下標(biāo)變量代表元素在數(shù)組中的位置。分;下標(biāo)變量代表元素在數(shù)組中的位置。其表示形式:其表示形式: A(1),A(10) X(1,1), X1(1,10), X(2,10) Y(0,0,0), Y(1,2,5)7.1 數(shù)組的概念數(shù)組的概念7.1.1 概述概述Visual
2、Basic中的數(shù)組,按不同的方式可分為以下幾類:中的數(shù)組,按不同的方式可分為以下幾類:按數(shù)組的按數(shù)組的大小大小(元素個(gè)數(shù))是否可以改變來分為:定(元素個(gè)數(shù))是否可以改變來分為:定長數(shù)組、動態(tài)(可變長)數(shù)組。長數(shù)組、動態(tài)(可變長)數(shù)組。按元素的按元素的數(shù)據(jù)類型數(shù)據(jù)類型可分為:數(shù)值型數(shù)組、字符串?dāng)?shù)組、可分為:數(shù)值型數(shù)組、字符串?dāng)?shù)組、日期型數(shù)組、變體數(shù)組等。日期型數(shù)組、變體數(shù)組等。按數(shù)組的按數(shù)組的維數(shù)維數(shù)可分為:一維數(shù)組、二維數(shù)組、多維數(shù)可分為:一維數(shù)組、二維數(shù)組、多維數(shù)組。組。對象數(shù)組:菜單對象數(shù)組、控件數(shù)組。對象數(shù)組:菜單對象數(shù)組、控件數(shù)組。 Dim 數(shù)組名數(shù)組名(to)As 或:或: Dim
3、數(shù)組名數(shù)組名(to)例:例:Dim a(1 to 10) As Integer 聲明了聲明了a數(shù)組有數(shù)組有10個(gè)元個(gè)元素素1是下標(biāo)的下界是下標(biāo)的下界10是下標(biāo)的上界是下標(biāo)的上界數(shù)組元數(shù)的數(shù)據(jù)類型數(shù)組元數(shù)的數(shù)據(jù)類型與上面聲明等價(jià)形式:與上面聲明等價(jià)形式: Dim a%(1 to 10) 7. 2.1 一維數(shù)組一維數(shù)組一、一、 一維數(shù)組的聲明一維數(shù)組的聲明 7.2 靜態(tài)數(shù)組聲明及應(yīng)用靜態(tài)數(shù)組聲明及應(yīng)用說明:1數(shù)組名的命名規(guī)則與變量的命名相同。數(shù)組名的命名規(guī)則與變量的命名相同。2數(shù)組的元素個(gè)數(shù):數(shù)組的元素個(gè)數(shù):上界上界-下界下界+1。3缺省缺省為為0,若希望下標(biāo)從若希望下標(biāo)從1開始,可在模塊的通用部
4、分開始,可在模塊的通用部分使用使用Option Base語句將設(shè)為語句將設(shè)為1。其使用格式是:其使用格式是: Option Base 0|1 后面的參數(shù)只能取后面的參數(shù)只能取0或或1例如:例如:Option Base 1 將數(shù)組聲明中缺省將數(shù)組聲明中缺省下標(biāo)設(shè)為下標(biāo)設(shè)為1 4和和不能使用變量,必須是常量不能使用變量,必須是常量,常量可以是,常量可以是直接常量、符號常量,一般是整型常量。直接常量、符號常量,一般是整型常量。Dim N As IntegerN=Val(Input(“Enter a Number=?”)Dim A(N) As Integer 5如果省略如果省略As子句,則數(shù)組的類型為
5、變體類型。子句,則數(shù)組的類型為變體類型。6數(shù)組中各元素在內(nèi)存占一片連續(xù)的存儲空間,數(shù)組中各元素在內(nèi)存占一片連續(xù)的存儲空間,一維數(shù)組在內(nèi)存中存放的順序是下標(biāo)大小的順序,一維數(shù)組在內(nèi)存中存放的順序是下標(biāo)大小的順序,如圖所示:如圖所示:使用形式:使用形式: 數(shù)組名數(shù)組名(下標(biāo)下標(biāo)) 其中:下標(biāo)可以是整型變量、常量或表達(dá)式。其中:下標(biāo)可以是整型變量、常量或表達(dá)式。例如:例如: 設(shè)有下面的數(shù)組定義:設(shè)有下面的數(shù)組定義: Dim B(10) As Integer,A(10) As Integer 則下面的語句都是正確的。則下面的語句都是正確的。 A(1)=A(2)+B(1)+5 取數(shù)組元素運(yùn)算取數(shù)組元素運(yùn)
6、算 A(i)=B(i) 下標(biāo)使用變量下標(biāo)使用變量 B(i+1)=A(i+2) 下標(biāo)使用表達(dá)式下標(biāo)使用表達(dá)式二、二、 一維數(shù)組元素的引用一維數(shù)組元素的引用1. 可通過循環(huán)給數(shù)組元素的初值可通過循環(huán)給數(shù)組元素的初值 For i = 1 To 10 A數(shù)組的每個(gè)元素值為數(shù)組的每個(gè)元素值為1 A(i)=1 Next i 2. 數(shù)組的輸入數(shù)組的輸入 輸入輸入100個(gè)數(shù),并存入到數(shù)組個(gè)數(shù),并存入到數(shù)組A中中For i = 1 To 100 A(i) =Val( InputBox(“輸入輸入A(” & i & “) 的值的值”) ) Next i三、一維數(shù)組元素的基本操作三、一維數(shù)組元素的基本操作Dim M
7、ax As Integer,iMax As Integer Max=A(1):iMax=1 For i = 2 To 10 If A(i)Max ThenMax=A(i)iMax=i End If Next I4. 將數(shù)組元素倒置將數(shù)組元素倒置For i =1 To 102 t=A(i) A(i)=A(10-i+1) A(10-i+1)=tNext I3. 求數(shù)組中最大元素及所在下標(biāo)求數(shù)組中最大元素及所在下標(biāo)四、四、 排序問題排序問題 1選擇法排序選擇法排序算法思想:算法思想: 1)對有)對有n個(gè)數(shù)的序列(存放在數(shù)組個(gè)數(shù)的序列(存放在數(shù)組a(n)中),從中選出最小中),從中選出最?。ㄉ颍┗蜃?/p>
8、大(降序)的數(shù),與第(升序)或最大(降序)的數(shù),與第1個(gè)數(shù)交換位置;個(gè)數(shù)交換位置; 2)除第)除第1 個(gè)數(shù)外,其余個(gè)數(shù)外,其余n-1個(gè)數(shù)中選最小或最大的數(shù),與第個(gè)數(shù)中選最小或最大的數(shù),與第2個(gè)數(shù)交換位置;個(gè)數(shù)交換位置; 3)依次類推,選擇了)依次類推,選擇了n-1次后,這個(gè)數(shù)列已按升序排列。次后,這個(gè)數(shù)列已按升序排列。For i = 1 To n - 1For i = 1 To n - 1 p = i p = i For j = i + 1 To n For j = i + 1 To n If a(p) a(j) Then p = j If a(p) a(j) Then p = j Next
9、j Next j temp = a(i) temp = a(i) a(i) = a(p) a(i) = a(p) a(p) = temp a(p) = tempNext iNext i選擇法排序(升序)的選擇法排序(升序)的VB程序程序:2冒泡法排序(遞增)冒泡法排序(遞增) 算法思想:算法思想:(將相鄰兩個(gè)數(shù)比較,小的調(diào)到前頭將相鄰兩個(gè)數(shù)比較,小的調(diào)到前頭) 1)有)有n個(gè)數(shù)(存放在數(shù)組個(gè)數(shù)(存放在數(shù)組a(n)中),第一趟將每中),第一趟將每相鄰兩個(gè)數(shù)比較,小的調(diào)到前頭,經(jīng)相鄰兩個(gè)數(shù)比較,小的調(diào)到前頭,經(jīng)n-1次兩兩相鄰次兩兩相鄰比較后,最大的數(shù)已比較后,最大的數(shù)已“沉底沉底”,放在最后一個(gè)
10、位置,放在最后一個(gè)位置,小數(shù)上升小數(shù)上升“浮起浮起”; 2)第二趟對余下的)第二趟對余下的n-1個(gè)數(shù)(最大的數(shù)已個(gè)數(shù)(最大的數(shù)已“沉沉底底”)按上法比較,經(jīng))按上法比較,經(jīng)n-2次兩兩相鄰比較后得次大次兩兩相鄰比較后得次大的數(shù);的數(shù); 3)依次類推,)依次類推,n個(gè)數(shù)共進(jìn)行個(gè)數(shù)共進(jìn)行n-1趟比較,在第趟比較,在第j趟趟中要進(jìn)行中要進(jìn)行n-j次兩兩比較。次兩兩比較。For i = 1 To n - 1For i = 1 To n - 1 For j = 1 To n-i For j = 1 To n-i If a(j) a(j+1) Then If a(j) a(j+1) Then temp=a
11、(j) temp=a(j) a(j)=a(j+1) a(j)=a(j+1) a(j+1)=temp a(j+1)=temp End if End if Next j Next jNext iNext i冒泡法排序(升序)的冒泡法排序(升序)的VB程序程序: 例例7.2 用隨機(jī)函數(shù)產(chǎn)生50個(gè)10,100 的隨機(jī)整數(shù),并按照由小到大的順序打印出來。程序界面如下:例例7.1 編程求某班60個(gè)學(xué)生某門課程考試的平均成績及高于平均成績的學(xué)生人數(shù)。 聲明格式如下:聲明格式如下:Dim 數(shù)組名數(shù)組名( to , to ) As 其中的參數(shù)與一維數(shù)組完全相同。 例如:例如:Dim a(2,3) As Sing
12、le 二維數(shù)組在內(nèi)存的存放順序是二維數(shù)組在內(nèi)存的存放順序是“先行后列先行后列”。例如數(shù)組。例如數(shù)組a的各元素在內(nèi)存中的存放順序是:的各元素在內(nèi)存中的存放順序是:a(0,0)a(0,1)a(0,2)a(0,3)a(1,0)a(1,1)a(1,2) a(1,3)a(2,0)(2,1)a(2,2)a(2,3) 9638527417.2.2 二維數(shù)組二維數(shù)組一、一、 二維數(shù)組的聲明二維數(shù)組的聲明引用形式:引用形式: 數(shù)組名數(shù)組名(下標(biāo)下標(biāo)1,下標(biāo),下標(biāo)2)例如:例如: a(1,2)=10 a(i+2,j)a(2,3)*2 在程序中常常通過二重循環(huán)來操作使用二維數(shù)組元素。在程序中常常通過二重循環(huán)來操作使
13、用二維數(shù)組元素。 二維數(shù)組數(shù)據(jù)的輸入二維數(shù)組數(shù)據(jù)的輸入 2. 求最大元素及其所在的行和列求最大元素及其所在的行和列 3. 計(jì)算兩矩陣相應(yīng)位置元素相乘計(jì)算兩矩陣相應(yīng)位置元素相乘 4. 矩陣的轉(zhuǎn)置矩陣的轉(zhuǎn)置 二、二、 二維數(shù)組的引用二維數(shù)組的引用三、二維數(shù)組的基本操作三、二維數(shù)組的基本操作二維數(shù)組數(shù)據(jù)的輸入二維數(shù)組數(shù)據(jù)的輸入 Dim a(1 to 4,1 to 5) As Integer, i As Integer, j As Integer給二維數(shù)組給二維數(shù)組a輸入數(shù)據(jù)的程序段如下:輸入數(shù)據(jù)的程序段如下: For i=1 to 4 For j=1 to 5 A(i,j)=Val(InputBox
14、(a(& I &, & j & )=?) Next j Next i2. 求最大元素及其所在的行和列求最大元素及其所在的行和列 用變量用變量max存放最大值,存放最大值,row,column存放最大值所在行列號存放最大值所在行列號 Max = a(1, 1): row = 1: Column = 1 For i = 1 To 4 For j = 1 To 5 If a(i, j) a(row, Column) Then Max = a(i, j) row = i Column = j End If Next jNext iPrint 最大元素是最大元素是; MaxPrint 在第在第 & ro
15、w & 行行,; 第第 & Column & 列列3. 計(jì)算兩矩陣相應(yīng)位置元素相乘(略)計(jì)算兩矩陣相應(yīng)位置元素相乘(略) 4. 矩陣的轉(zhuǎn)置矩陣的轉(zhuǎn)置 設(shè)設(shè)A是是M*N的矩陣,要重新定的矩陣,要重新定義一個(gè)義一個(gè)N*M的二級數(shù)組的二級數(shù)組B,將,將A轉(zhuǎn)置得到轉(zhuǎn)置得到B的程序代碼如下:的程序代碼如下:For i = To For j = To N b(j,i) = a(i,j) Next jNext i 定義多維數(shù)組的格式如下:定義多維數(shù)組的格式如下:Dim 數(shù)組名數(shù)組名( to , to ,) As 例如:例如: Dim a(5,5,5) As Integer 聲明聲明a是三維數(shù)組是三維數(shù)組 D
16、im b(2,6,10,5) As Integer 聲明聲明b是四維數(shù)組是四維數(shù)組 三、三、 多維數(shù)組的聲明和引用多維數(shù)組的聲明和引用動態(tài)數(shù)組:在聲明時(shí)未給出數(shù)組的大小。定長數(shù)組是在程序編譯動態(tài)數(shù)組:在聲明時(shí)未給出數(shù)組的大小。定長數(shù)組是在程序編譯時(shí)分配存儲空間,而動態(tài)數(shù)組是在程序執(zhí)行時(shí)分配存儲空間。時(shí)分配存儲空間,而動態(tài)數(shù)組是在程序執(zhí)行時(shí)分配存儲空間。 動態(tài)數(shù)組的建立及使用動態(tài)數(shù)組的建立及使用 包括聲明和大小說明兩步:包括聲明和大小說明兩步: 1在使用在使用Dim、Private或或Public語句聲明括號內(nèi)為空的數(shù)組。語句聲明括號內(nèi)為空的數(shù)組。 格式:格式:Dim | Private|Pub
17、lic 數(shù)組名()數(shù)組名()As 數(shù)據(jù)類型數(shù)據(jù)類型 例:例:Dim a() As Integer2在過程中用在過程中用ReDim語句指明該數(shù)組的大小。語句指明該數(shù)組的大小。 格式:格式:ReDim Preserve 數(shù)組名(下標(biāo)數(shù)組名(下標(biāo)1,下標(biāo),下標(biāo)2) Preserve參數(shù):保留數(shù)組中原來的數(shù)據(jù)參數(shù):保留數(shù)組中原來的數(shù)據(jù) 7.3.1動態(tài)數(shù)組動態(tài)數(shù)組7.3 動態(tài)數(shù)組聲明及應(yīng)用動態(tài)數(shù)組聲明及應(yīng)用一、一、 建立動態(tài)數(shù)組建立動態(tài)數(shù)組Sub Form_click( ) Dim x( ) As Single n =Inputbox(“輸入n”) ReDim x(n) End Sub例:Redim A
18、(10) Redim Preserve A(20)說明:說明:(1)ReDim語句是一個(gè)可執(zhí)行語句,只能出現(xiàn)在過程中,并語句是一個(gè)可執(zhí)行語句,只能出現(xiàn)在過程中,并且可以多次使用,改變數(shù)組的維數(shù)和大小。且可以多次使用,改變數(shù)組的維數(shù)和大小。 (2)定長數(shù)組聲時(shí)中的下標(biāo)只能是常量,而動態(tài)數(shù)組)定長數(shù)組聲時(shí)中的下標(biāo)只能是常量,而動態(tài)數(shù)組ReDim 語句中的下標(biāo)是常量,也可以是有了確定值的變量。語句中的下標(biāo)是常量,也可以是有了確定值的變量。 例:例: Private Sub Form_Click() Dim N As Integer N=Val(InputBox(“輸入輸入N=?”) Dim a(N)
19、 As Integer . End sub(3)在過程中可以多次使用)在過程中可以多次使用ReDim來改變數(shù)組的大小,也來改變數(shù)組的大小,也可改變數(shù)組的維數(shù)??筛淖償?shù)組的維數(shù)。 例:例:ReDim x(10) ReDim x(20) x(20) = 30 Print x(20) ReDim x(20, 5) x(20, 5) = 10 Print x(20, 5) (4)每次使用)每次使用ReDim語句都會使原來數(shù)組中值丟失,可以語句都會使原來數(shù)組中值丟失,可以在在ReDim后加后加Preserve 參數(shù)來保留數(shù)組中的數(shù)據(jù)。參數(shù)來保留數(shù)組中的數(shù)據(jù)。問題:問題:下面程序的,輸出結(jié)果應(yīng)該是什么?下
20、面程序的,輸出結(jié)果應(yīng)該是什么?Dim ID( ) As Integer, Name1( ) As String, i As IntegerReDim ID(5), Name1(5)For i = 1 To 5 ID(i) = i: Name1(i) = A & iNext iReDim Preserve ID(UBound(ID) + 1) Name1(UBound(Name1) + 1)ID(6) = 6: Name1(6) = ABCFor i = 1 To 6 Print ID(i), Name1(i)Next i例7.3:編程:輸入正整數(shù)編程:輸入正整數(shù)n,再由,再由InputBox函
21、數(shù)輸函數(shù)輸入入n個(gè)數(shù)至數(shù)組并在窗體上輸出這個(gè)數(shù)至數(shù)組并在窗體上輸出這n個(gè)數(shù),然后要個(gè)數(shù),然后要求元素?cái)?shù)據(jù)反過來存放,并輸出,要求使用動態(tài)求元素?cái)?shù)據(jù)反過來存放,并輸出,要求使用動態(tài)數(shù)組實(shí)現(xiàn)。數(shù)組實(shí)現(xiàn)。即第即第1個(gè)元素與第個(gè)元素與第n個(gè)元素互換,第個(gè)元素互換,第2個(gè)元素與第個(gè)元素與第n-1個(gè)個(gè)元素互換,元素互換,。最后在窗體上輸出對換后各元素的值。最后在窗體上輸出對換后各元素的值。如:輸入如:輸入8和和11、12、13、14、15、16、17、18,輸出,輸出為:為:11 12 13 14 15 16 17 18和和18 17 16 15 14 13 12 11。二、動態(tài)數(shù)組舉例二、動態(tài)數(shù)組舉例P
22、rivate Sub Command1_Click()Dim A( ) As Integer, N As Integer, i As Integer, T As IntegerN = Val(InputBox(請輸入數(shù)據(jù)個(gè)數(shù)請輸入數(shù)據(jù)個(gè)數(shù))ReDim A(N)For i = 1 To N A(i) = Val(InputBox(請輸入第請輸入第 & i & 個(gè)數(shù)個(gè)數(shù)) Print A(i);Next iPrint For i = 1 To N 2 T = A(i): A(i) = A(N - i + 1): A(N - i + 1) = T Next iFor i = 1 To N Print
23、 A(i);Next iPrintEnd Sub Aarry函數(shù)可方便地對數(shù)組整體賦值,但它只能給聲明函數(shù)可方便地對數(shù)組整體賦值,但它只能給聲明Variant的變量或僅由括號括起的動態(tài)數(shù)組賦值。賦值后的數(shù)的變量或僅由括號括起的動態(tài)數(shù)組賦值。賦值后的數(shù)組大小由賦值的個(gè)數(shù)決定。組大小由賦值的個(gè)數(shù)決定。 例如,要將例如,要將1,2,3,4,5,6,7 這些值賦值給數(shù)組這些值賦值給數(shù)組a,可使用下面,可使用下面的方法賦值。的方法賦值。Dim a()A=array(1,2,3,4,5,6,7)Dim a A=array(1,2,3,4,5,6,7)7.3.2 與數(shù)組操作有關(guān)的幾個(gè)函數(shù)與數(shù)組操作有關(guān)的幾個(gè)
24、函數(shù)一、一、Aarry函數(shù)函數(shù) Ubound( )函數(shù)和函數(shù)和Lbound( )函數(shù)函數(shù)分別用來確定數(shù)組某一維的上界和下界值。分別用來確定數(shù)組某一維的上界和下界值。使用形式如下:使用形式如下: UBound(, ) LBound( , ) 其中:其中:必需的。數(shù)組變量的名稱,遵循標(biāo)準(zhǔn)變量命名:必需的。數(shù)組變量的名稱,遵循標(biāo)準(zhǔn)變量命名約定。約定。:可選的;一般是整型常量或變量。指定返回哪一:可選的;一般是整型常量或變量。指定返回哪一維的上界。維的上界。1 表示第一維,表示第一維,2 表示第二維,如此等等。如果表示第二維,如此等等。如果省略默認(rèn)是省略默認(rèn)是1。二、求數(shù)組的上界二、求數(shù)組的上界Ubo
25、und( )函數(shù)函數(shù) 下界下界 Lbound( )函數(shù)函數(shù) 使用格式:使用格式:Split( , )說明:說明: 使用使用Split函數(shù)可從一個(gè)字符串中,以某個(gè)指定符號為分隔函數(shù)可從一個(gè)字符串中,以某個(gè)指定符號為分隔符,分離若干個(gè)子字符串,建立一個(gè)下標(biāo)符,分離若干個(gè)子字符串,建立一個(gè)下標(biāo)從零從零開始的一維數(shù)開始的一維數(shù)組。組。如:如:a=1,2,3,4,5,6,45,656,465,564,45 b=split(a,) 那么那么b(0)=1 b(1)=2 b. 三、三、Split函數(shù)函數(shù) 對一批同類且功能類似的控件,可以建成控對一批同類且功能類似的控件,可以建成控件數(shù)組,控件數(shù)組可以簡化編程,
26、控件數(shù)件數(shù)組,控件數(shù)組可以簡化編程,控件數(shù)組中的每一個(gè)元素是同類控件,并且具有組中的每一個(gè)元素是同類控件,并且具有相同的名稱。相同的名稱??丶?shù)組用索引值控件數(shù)組用索引值Index屬性區(qū)分元素。屬性區(qū)分元素。7.4 7.4 控件數(shù)組的概念及應(yīng)用控件數(shù)組的概念及應(yīng)用7.4.1控件數(shù)組的概述控件數(shù)組的概述首先,與創(chuàng)建其它控件一樣,創(chuàng)建第首先,與創(chuàng)建其它控件一樣,創(chuàng)建第1個(gè)控件個(gè)控件 如果需要修改名稱,則可先在屬性窗口修改該控件名如果需要修改名稱,則可先在屬性窗口修改該控件名稱;稱;選擇該控件,使用選擇該控件,使用“編輯編輯”菜單的菜單的“復(fù)制復(fù)制”命令命令使用使用“編輯編輯”菜單的菜單的“粘貼粘貼
27、”命令命令 這時(shí)這時(shí)VB出現(xiàn)對話框,詢問是否建立控件數(shù)組,單擊出現(xiàn)對話框,詢問是否建立控件數(shù)組,單擊“是是” 這時(shí)新控件的這時(shí)新控件的Index索引值為索引值為1,而原控件索引值自動,而原控件索引值自動為為0; 控件數(shù)組已經(jīng)產(chǎn)生控件數(shù)組已經(jīng)產(chǎn)生7.4.2 創(chuàng)建控件數(shù)組創(chuàng)建控件數(shù)組一、創(chuàng)建控件數(shù)組的步驟:一、創(chuàng)建控件數(shù)組的步驟:控件數(shù)組及元素,也有屬性、方法和事件??丶?shù)組及元素,也有屬性、方法和事件。元素的方法、事件和屬性與它的非數(shù)組同類控件一樣元素的方法、事件和屬性與它的非數(shù)組同類控件一樣 但有一個(gè)重要的屬性是但有一個(gè)重要的屬性是Index屬性,相當(dāng)于數(shù)屬性,相當(dāng)于數(shù)組下標(biāo),編程用組下標(biāo),編
28、程用二、控件數(shù)組及元素,也有屬性、方法和事件:二、控件數(shù)組及元素,也有屬性、方法和事件:訪問控件數(shù)組元素與訪問普通數(shù)組元素一樣訪問控件數(shù)組元素與訪問普通數(shù)組元素一樣通過控件名稱通過控件名稱(索引值索引值)來確定每個(gè)控件來確定每個(gè)控件如如Command1(2). Caption=問候問候。如果是一批很有規(guī)律的操作,一般可以通過循如果是一批很有規(guī)律的操作,一般可以通過循環(huán)進(jìn)行。環(huán)進(jìn)行。注意:注意:若刪除了其中某數(shù)組元素(控件),則將導(dǎo)致若刪除了其中某數(shù)組元素(控件),則將導(dǎo)致索引索引Index不連續(xù),此時(shí)再使用該索引值將出錯。不連續(xù),此時(shí)再使用該索引值將出錯。解決的方法是重新修改其他元素的解決的方
29、法是重新修改其他元素的Index值值7.4.3 訪問控件數(shù)組元素例【例【7-4】設(shè)計(jì)如圖所示程序,要求用設(shè)計(jì)如圖所示程序,要求用控件數(shù)組??丶?shù)組。創(chuàng)建有創(chuàng)建有3個(gè)單選鈕的控件數(shù)組個(gè)單選鈕的控件數(shù)組程序代碼如下:程序代碼如下:Private Sub Form_Load() Text1.FontSize = 10 Option1(0).Value = True 使索引值使索引值0的控件處于選中狀態(tài)的控件處于選中狀態(tài) Text1.Text = Hello!End SubPrivate Sub Option1_Click(Index As Integer) Text1.FontSize = Val(
30、Option1(Index).Caption)End Sub程序運(yùn)行時(shí)單擊單選按鈕,程序運(yùn)行時(shí)單擊單選按鈕,Index就自動作為就自動作為Click事件的參數(shù),傳給事件的參數(shù),傳給Click事件。事件。問題的提出問題的提出 有有50個(gè)學(xué)生成績和學(xué)號,要求按成績高到底排個(gè)學(xué)生成績和學(xué)號,要求按成績高到底排序,學(xué)號也對應(yīng)調(diào)整,如何解決?序,學(xué)號也對應(yīng)調(diào)整,如何解決? 方法:開兩個(gè)數(shù)組,分別存放成績和學(xué)號方法:開兩個(gè)數(shù)組,分別存放成績和學(xué)號 問題問題: 成績和學(xué)號易張冠李戴成績和學(xué)號易張冠李戴 怎么辦怎么辦? 作為整體描述作為整體描述,引入結(jié)構(gòu)引入結(jié)構(gòu)本章目錄本章目錄7.5 自定義類型聲明及使用自定
31、義類型聲明及使用數(shù)組存放性質(zhì)相同的數(shù)據(jù)集合。若數(shù)組存放性質(zhì)相同的數(shù)據(jù)集合。若不同類型不同類型信息作為一信息作為一個(gè)整體來描述,例如姓名、性別、出生年月等,通過個(gè)整體來描述,例如姓名、性別、出生年月等,通過Type語句來實(shí)現(xiàn)語句來實(shí)現(xiàn)。Type Type 自定義類型名自定義類型名元素名元素名1 As 數(shù)據(jù)類型名數(shù)據(jù)類型名 元素名元素名n As 數(shù)據(jù)類型名數(shù)據(jù)類型名End TypeEnd Type本章目錄本章目錄 7.5.1 自定義類型自定義類型一、定義一、定義例如,定義一個(gè)有關(guān)學(xué)生信息的類型:例如,定義一個(gè)有關(guān)學(xué)生信息的類型:Type StudTypeType StudType StudType
32、為為自定義自定義類型名類型名 Name As String*5 姓名姓名 Sex As String*1 性別性別 Telephone As Long 電話電話 School As String*10 學(xué)校學(xué)校End TypeEnd Type自定義類型自定義類型不能在過程內(nèi)定義不能在過程內(nèi)定義,一般放在標(biāo)準(zhǔn)模,一般放在標(biāo)準(zhǔn)模塊文件,默認(rèn)為塊文件,默認(rèn)為Public;若在窗體模塊的通用聲;若在窗體模塊的通用聲明段定義,必須加明段定義,必須加Private。 本章目錄本章目錄定義了定義了自定義類型,自定義類型,就可在變量的聲明時(shí)使用。就可在變量的聲明時(shí)使用。 Dim Dim 變量名變量名 AsAs
33、 自定義自定義類型名類型名例如,如下語句:例如,如下語句: Dim S1 As StudType,S2 As StudType 聲明聲明S1、S2為兩個(gè)同種類型的變量為兩個(gè)同種類型的變量本章目錄本章目錄二、自定義類型變量的使用二、自定義類型變量的使用注意:注意:不要混淆不要混淆StudType 和和S1 ,前者如同,前者如同Integer等的等的類型名,后者根據(jù)該類型分配所需的內(nèi)存空間,存類型名,后者根據(jù)該類型分配所需的內(nèi)存空間,存儲各成員數(shù)據(jù)。儲各成員數(shù)據(jù)。(2) 類型變量和數(shù)組相同之處它們都是由若干個(gè)類型變量和數(shù)組相同之處它們都是由若干個(gè)成成員員組成;不同之處,前者的成員代表不同性質(zhì)、不組
34、成;不同之處,前者的成員代表不同性質(zhì)、不同類型的數(shù)據(jù),以各個(gè)不同的成員名表示;而數(shù)組同類型的數(shù)據(jù),以各個(gè)不同的成員名表示;而數(shù)組一般存放的是同種性質(zhì)、同種類型的數(shù)據(jù),以下標(biāo)一般存放的是同種性質(zhì)、同種類型的數(shù)據(jù),以下標(biāo)表示不同的元素。表示不同的元素。本章目錄本章目錄引用自定義類型變量中的某個(gè)成員,形式如下:引用自定義類型變量中的某個(gè)成員,形式如下: 自定義類型變量名自定義類型變量名. .成員名成員名例如,例如, S1.Name S1變量中的姓名變量中的姓名 S1.Sex 性別性別可利用可利用WithWith語句簡化成員引用:語句簡化成員引用: With With 結(jié)構(gòu)變量對象名結(jié)構(gòu)變量對象名 語
35、句塊語句塊 End WithEnd WithWith S1 .Name = 張華張華 .Sex = 男男 .School=“青海大學(xué)青海大學(xué)End With 本章目錄本章目錄三、自定義類型變量成員的引用三、自定義類型變量成員的引用列表框和組合框可解決單選框和復(fù)選框選列表框和組合框可解決單選框和復(fù)選框選項(xiàng)數(shù)量的限制。項(xiàng)數(shù)量的限制。列表框控件可顯示多個(gè)項(xiàng)目列表列表框控件可顯示多個(gè)項(xiàng)目列表列表框往往可讓用戶選擇一個(gè)或多個(gè)項(xiàng)目。列表框往往可讓用戶選擇一個(gè)或多個(gè)項(xiàng)目。7.6.1 列表框(列表框(ListBox) 7.6 列表框和組合框控件列表框和組合框控件1列表框控件的主要屬性列表框控件的主要屬性(名稱
36、)(名稱)Name:設(shè)置名稱,字符型。缺省值為設(shè)置名稱,字符型。缺省值為List1List : 保存選項(xiàng)的字符串?dāng)?shù)組。如第保存選項(xiàng)的字符串?dāng)?shù)組。如第i項(xiàng)為項(xiàng)為List(i-1)ListCount : 列表框項(xiàng)目總數(shù),列表框項(xiàng)目總數(shù), 共有共有0 (ListCount-)個(gè))個(gè)ListIndex : 選中的項(xiàng)目在列表框中的位置選中的項(xiàng)目在列表框中的位置(索引值或索引值或 下標(biāo))下標(biāo)) 第一項(xiàng)的索引值為第一項(xiàng)的索引值為0,第二項(xiàng)的索引值為,第二項(xiàng)的索引值為1。Sorted : 設(shè)置列表框項(xiàng)目是否排序。設(shè)置列表框項(xiàng)目是否排序。True為升序排列為升序排列MultiSelect : 確定列表框是否允許
37、多選??稍O(shè)置確定列表框是否允許多選??稍O(shè)置0、1、2Selected : 列表框某項(xiàng)的選中狀態(tài),布爾型數(shù)組。列表框某項(xiàng)的選中狀態(tài),布爾型數(shù)組。SelCount : 列表框中選中的項(xiàng)目數(shù)列表框中選中的項(xiàng)目數(shù)Text : 最后一次選中的選項(xiàng)的文本,該屬性不能最后一次選中的選項(xiàng)的文本,該屬性不能 直接修改直接修改屬性舉例,如:屬性舉例,如: Str=List1.List(2) If List1.Selected(i) Then Msgbox List1.List(i) MultiSelect為為0:List1.Text等價(jià)等價(jià)List1.List(List1.ListIndex)2列表框控件的方法列
38、表框控件的方法(1)AddItem方法方法AddItem方法用于建立列表框數(shù)據(jù)項(xiàng)方法用于建立列表框數(shù)據(jù)項(xiàng)格式:格式:列表框?qū)ο竺Q列表框?qū)ο竺Q. AddItem 項(xiàng)目字符串項(xiàng)目字符串,索引值索引值索引值表示添加的位置,如索引值表示添加的位置,如3,表示添加,表示添加的下標(biāo)為的下標(biāo)為3省略索引值,則將項(xiàng)目添加在列表框最后。省略索引值,則將項(xiàng)目添加在列表框最后。如:如:List1.AddItem Hello 將字符串添加到列表框?qū)⒆址砑拥搅斜砜蜃詈笞詈驦ist1.AddItem List2.List(0) 將將List2中的第一條放入中的第一條放入List1List1.AddItem 計(jì)算機(jī)
39、計(jì)算機(jī),2 將字符串添加到將字符串添加到List1第第2條后條后(2)RemoveItem方法方法RemoveItem方法清除列表框一項(xiàng)數(shù)據(jù)項(xiàng)方法清除列表框一項(xiàng)數(shù)據(jù)項(xiàng)格式:格式:列表框?qū)ο竺Q列表框?qū)ο竺Q.RemoveItem 索引值索引值它通過索引值刪除列表框中指定項(xiàng)目。它通過索引值刪除列表框中指定項(xiàng)目。如:如:List1.RemoveItem 2 刪除刪除List1中下標(biāo)為中下標(biāo)為2的項(xiàng)目的項(xiàng)目(3)Clear方法方法Clear方法用于清除列表框中所有項(xiàng)目。方法用于清除列表框中所有項(xiàng)目。格式:格式:列表框?qū)ο竺Q列表框?qū)ο竺Q.Clear3列表框控件的常用事件列表框控件的常用事件Click事件事件DblClick事件事件例題例題7.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年分期付款旅游套餐協(xié)議
- 導(dǎo)演與設(shè)計(jì)師2025年度合作協(xié)議3篇
- 2025年人事代理授權(quán)服務(wù)協(xié)議
- 二零二五版奶茶店財(cái)務(wù)審計(jì)與風(fēng)險(xiǎn)控制服務(wù)合同
- 2025年代理權(quán)益保護(hù)協(xié)議書案例展示總結(jié)介紹案例
- 2025年在線購物消費(fèi)者協(xié)議
- 2025年銀行間市場協(xié)議存款居間業(yè)務(wù)合作合同范本6篇
- 2025年超額保險(xiǎn)合同保險(xiǎn)合同保險(xiǎn)范圍協(xié)議
- 復(fù)習(xí)課件蘇聯(lián)的社會主義建設(shè)人教版
- 2025年度新能源技術(shù)研發(fā)個(gè)人技術(shù)服務(wù)合同4篇
- 書籍小兵張嘎課件
- 藝術(shù)哲學(xué):美是如何誕生的學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 北京海淀區(qū)2025屆高三下第一次模擬語文試題含解析
- 量子醫(yī)學(xué)治療學(xué)行業(yè)投資機(jī)會分析與策略研究報(bào)告
- 多重耐藥菌病人的管理-(1)課件
- (高清版)TDT 1056-2019 縣級國土資源調(diào)查生產(chǎn)成本定額
- 環(huán)境監(jiān)測對環(huán)境保護(hù)的意義
- 2023年數(shù)學(xué)競賽AMC8試卷(含答案)
- 神經(jīng)外科課件:神經(jīng)外科急重癥
- 2023年十天突破公務(wù)員面試
- 《瘋狂動物城》中英文對照(全本臺詞)
評論
0/150
提交評論