【正文】
ents(10) As student Dim i As Integer Const M = 10 Private Sub cmdin_Click() Dim s() As String Dim j As Integer Dim tstr As String 自定義數(shù)據(jù)類型 i = i + 1 If i = M Then s = Split(, ,) students(i) .Name = s(0) students(i) .Number = s(1) For j = 1 To 3 students(i) .Score(j) = s(j + 1) Next j 控件數(shù)組 ?控件數(shù)組的概念 –類型相同且名稱屬性相同的一組控件 –通過 Index屬性區(qū)分各控件 – optPicture(0)、 optPicture(1) … optPicture(9) 控件數(shù)組 ? 控件數(shù)組的建立 1. 設(shè)計時建立控件數(shù)組 1. 首先在窗體上建立一個控件,并設(shè)置其屬性。 2. 復(fù)制該控件到設(shè)置位置,這時系統(tǒng)將彈出確認(rèn)是否要建立一個控件數(shù)組的對話框,選擇 “ 是 ” 按鈕,即可建立控件數(shù)組??丶?shù)組中的其余按鈕,通過 “ 粘貼 ” 得到 控件數(shù)組 2. 程序運(yùn)行時添加控件數(shù)組 1. 首先在窗體上建立一個控件 ,設(shè)置該控件的 Index屬性值為 0. 2. 通過方法 Load添加其余所需元素(刪除添加的元素用 Unload方法) 3. 添加的按鈕在窗體中的位置由按鈕的 Left和 Top屬性值確定,設(shè)定 Visible屬性為 True 控件數(shù)組 ?控件數(shù)組的引用 引用控件數(shù)組中各控件對象的方法是: 控件數(shù)組名(索引號) 控件數(shù)組 ?例 : 控件數(shù)組 Private Sub Form_Load() Dim widthnum As Integer, Heighunm As Integer, i As Integer widthnum = cmdnum(0).Width heightnum = cmdnum(0).Height For i = 1 To 9 Load cmdnum(i) If (i 1) Mod 3 = 0 Then 39。第一列 cmdnum(i).Top = cmdnum(i 1).Top heighnum 225 39。225為行間距 cmdnum(i).Left = cmdnum(0).Left Else 39。其它列 cmdnum(i).Top = cmdnum(i 1).Top cmdnum(i).Left = cmdnum(i 1).Left + cmdnumwith + 720 39。720為列間距 End If cmdnum(i).Caption = i cmdnum(i).Visible = True Next i End Sub 控件數(shù)組 ?【 實(shí)例 】 用控件數(shù)組修改第三章的案例 ——簡易計算器,并添加數(shù)制轉(zhuǎn)換功能:十進(jìn)制到二進(jìn)制、十六進(jìn)制和八進(jìn)制的轉(zhuǎn)換。 代碼編寫 ?數(shù)字按鈕代碼 = + cmdnum(Index).Caption sp = Abs(Val()) 39。保存十進(jìn)制代碼到窗體級變量 sp中,用于進(jìn)制轉(zhuǎn)換 代碼編寫 ?運(yùn)算符按鈕代碼 op = cmdoperator(Index).Caption 代碼編寫 ? 進(jìn)制轉(zhuǎn)換按鈕代碼 numd = sp Select Case Optc(Index).Index Case 0 num = 2 Case 1 num = 16 Case 2 num = 8 End Select While numd 0 c = numd Mod num If c = 10 Then c = c 10 + Asc(A) cs = Chr$(c) Else cs = Str$(c) End If numd = numd \ num numc = numc + cs Wend = StrReverse(numc) 39。字符串逆序 控件 ?列表框( ListBox) ?組合框( ComboBox) 控件 ——列表框常用屬性 ? MultiSelect屬性 設(shè)置列表框是否能選擇多項(xiàng) ? List屬性 該屬性是一個字符型數(shù)組,存放列表框的項(xiàng)目。 List數(shù)組的下標(biāo)是從 0開始。 ? ListCount屬性 該屬性只能在程序中設(shè)置或引用。 ListCount的值是列表框中所列項(xiàng)目的數(shù)量 控件 ——列表框常用屬性 ? ListIndex屬性 該屬性只能在程序中設(shè)置或引用。 ListIndex的值是程序運(yùn)行中選中的列表項(xiàng)的序號。若未選中任何項(xiàng),則ListIndex的值為 1 ? Selected屬性 該屬性只能在程序中設(shè)置或引用。 Selected屬性是一個邏輯數(shù)組,其元素對應(yīng)列表框中相應(yīng)的項(xiàng)。若某項(xiàng)被選中其Selected屬性值為 True,否則為 False。 控件 ——列表框常用屬性 ? Sorted屬性 該屬性只能在程序設(shè)置中引用。其值為True列表項(xiàng)目按字母順序排列顯示,否則按項(xiàng)目添加的先后順序顯示。 ? Style屬性 該屬性只能在設(shè)計時確定。用于設(shè)定控件的外觀,其值設(shè)為 0是標(biāo)準(zhǔn)樣式,為 1時復(fù)選框樣式 控件 ——列表框常用屬性 ? Text屬性 只能在程序中設(shè)置或引用,其屬性值是被選中列表項(xiàng)中的內(nèi)容。 控件 ——常用事件和方法 ? AddItem方法 用于將項(xiàng)目添加到列表框中,其語法為: 列表框名 .AddItem Item, index 其中, Item是添加的項(xiàng)目,為字符表達(dá)式, Index是可選項(xiàng),用來指定添加項(xiàng)目在列表框中的位置,如果省略添加到末尾。 控件 ——常用事件和方法 ? RemoveItem方法 從列表框中刪除一個項(xiàng)目,其語法為: 列表框名 .RemoveItem Index 其中 Index,用來指定要刪除的項(xiàng)目在列表框中的位置 控件 ——常用事件和方法 ? Clear方法 刪除列表框中的所有項(xiàng)目,其語法為: 項(xiàng)目列表框 .clear 控件 ——組合框的常用屬性 ? Style 屬性 Style屬性返回 /設(shè)置一個值,該值用來指示組合框的顯示類型和行為,且為只讀。其取值如下: 0(默認(rèn)值) ——下拉式組合框。由文本框和下拉列表組成,可以輸入、可選擇、可折疊。 1——簡單組合框。由文本框和固定列表框組成,可以輸入、可選擇、不可折疊。 2——下拉式列表框。僅由下拉式列表框組成,不可以輸入、可選擇、可折疊。 控件 ——組合框的常用屬性 ? Text 屬性 當(dāng) Style屬性設(shè)置為 0或 1 時, Text屬性返回 /設(shè)置編輯框中的文本; Style屬性為 2時 Text屬性返回列表框中選擇的項(xiàng)目。 控件 ——常用事件和方法 ? AddItem方法 ? Clear方法 ? RemoveItem方法 控件應(yīng)用 ?【 實(shí)例 】 制作花卉展示窗體 代碼設(shè)計 ?花卉類型選擇代碼: Private Sub cmbtype_Click() If = 玫瑰 Then 玫瑰 1 玫瑰 2 玫瑰 3 代碼設(shè)計 Else 菊花 1 菊花 2 菊花 3 菊花 4 End If End Sub 代碼設(shè)計 ? 花卉名稱選擇代碼: Private Sub lstname_Click() If = 玫瑰 Then Select Case Case 0 = LoadPicture() Case 1 = LoadPicture() Case 2 = LoadPicture() End Select 代碼設(shè)計 Else Select Case Case 0 = LoadPicture() Case 1 = LoadPicture() Case 2 = LoadPicture() Case 3 = LoadPicture() End Select End If End Sub 案例 ——成績分析工具 案例 ——代碼設(shè)計 ?添加組合框中項(xiàng)目的代碼 Private Sub Form_Load() Mary,06123 John,06124 Jeck,06125 …… Paul,06131 Tony,06132 End Sub 案例 ——代碼設(shè)計 ?將組合框選中項(xiàng)目添加到文本框( txtin) Private Sub txtin_GotFocus() = + End Sub 案例 ——代碼設(shè)計 ?排 “ 名次 ” 代碼 –排序代碼 –查找位置代碼 案例 ——代碼設(shè)計 ?排序代碼 39。求名次 39。將每個學(xué)生的學(xué)號和最后成績賦值給數(shù)組 num和 score For i = 1 To M num(i) = studentn(i, 2) score(i) = students(i, 4) Next i 案例 ——代碼設(shè)計 39。按數(shù)組 score排序,學(xué)號與成績同步交換 For i = 1 To M 1 max = i For j = i + 1 To M If score(j) score(max) Then max = j Next j t = score(i): score(i) = score(max): score(max) = t tn = num(i): num(i) = num(max): num(max) = tn Next i 案例 ——代碼設(shè)計 ? 查找位置代碼 39。找出 studentn(i,2)在數(shù)組 num中的位置,放入數(shù)組 order For i = 1 To M j = 1 While studentn(i, 2) num(j) j = j + 1 Wend order(i) = j Next 數(shù)組 order的值為名次。 案例 ——代碼設(shè)計 ? 成績分析代碼 1. 求出最大、最小及總和 2. 計算各分?jǐn)?shù)段人數(shù)及平均值 3. 輸出統(tǒng)計結(jié)果 案例 ——代碼設(shè)計 1. 求出最大、最小及總和 Dim max As Single, min As Single, sum As Single, ave As Single Dim ns As Integer, scount(5) As Integer max = students(1, 4) min = students(1, 4) 案例 ——代碼設(shè)計 For i = 1 To M If students(i, 4) max Then max = students(i, 4) Else If students(i, 4) min Then min = students(i, 4) End If End If sum = sum + students(i, 4) 案例 ——代碼設(shè)計 ns = Int(students(i, 4) / 10) Select Case ns Case 9, 10 scount(1) = scount(1) + 1 Case 8 scount(2) = scount(2) + 1 Case 7 scount(3) = scount(3) + 1 案例 ——代碼設(shè)計 Case 6 scount(4) = scount(4) + 1 Case Is 6 scount(5) = scount(5) + 1 End Select Next i ave = sum / M 39。平均值 案例 ——代碼設(shè)計 ?輸出統(tǒng)計結(jié)果 For i = 1 To 5 lbls(i 1).Caption = Str$(scount(i)) Next i