【正文】
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ù)組 1. 首先在窗體上建立一個控件,并設置其屬性。 2. 復制該控件到設置位置,這時系統(tǒng)將彈出確認是否要建立一個控件數(shù)組的對話框,選擇 “ 是 ” 按鈕,即可建立控件數(shù)組??丶?shù)組中的其余按鈕,通過 “ 粘貼 ” 得到 控件數(shù)組 2. 程序運行時添加控件數(shù)組 1. 首先在窗體上建立一個控件 ,設置該控件的 Index屬性值為 0. 2. 通過方法 Load添加其余所需元素(刪除添加的元素用 Unload方法) 3. 添加的按鈕在窗體中的位置由按鈕的 Left和 Top屬性值確定,設定 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ù)字按鈕代碼 = + cmdnum(Index).Caption sp = Abs(Val()) 39。保存十進制代碼到窗體級變量 sp中,用于進制轉換 代碼編寫 ?運算符按鈕代碼 op = cmdoperator(Index).Caption 代碼編寫 ? 進制轉換按鈕代碼 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屬性 設置列表框是否能選擇多項 ? List屬性 該屬性是一個字符型數(shù)組,存放列表框的項目。 List數(shù)組的下標是從 0開始。 ? ListCount屬性 該屬性只能在程序中設置或引用。 ListCount的值是列表框中所列項目的數(shù)量 控件 ——列表框常用屬性 ? ListIndex屬性 該屬性只能在程序中設置或引用。 ListIndex的值是程序運行中選中的列表項的序號。若未選中任何項,則ListIndex的值為 1 ? Selected屬性 該屬性只能在程序中設置或引用。 Selected屬性是一個邏輯數(shù)組,其元素對應列表框中相應的項。若某項被選中其Selected屬性值為 True,否則為 False。 控件 ——列表框常用屬性 ? Sorted屬性 該屬性只能在程序設置中引用。其值為True列表項目按字母順序排列顯示,否則按項目添加的先后順序顯示。 ? Style屬性 該屬性只能在設計時確定。用于設定控件的外觀,其值設為 0是標準樣式,為 1時復選框樣式 控件 ——列表框常用屬性 ? Text屬性 只能在程序中設置或引用,其屬性值是被選中列表項中的內容。 控件 ——常用事件和方法 ? AddItem方法 用于將項目添加到列表框中,其語法為: 列表框名 .AddItem Item, index 其中, Item是添加的項目,為字符表達式, Index是可選項,用來指定添加項目在列表框中的位置,如果省略添加到末尾。 控件 ——常用事件和方法 ? RemoveItem方法 從列表框中刪除一個項目,其語法為: 列表框名 .RemoveItem Index 其中 Index,用來指定要刪除的項目在列表框中的位置 控件 ——常用事件和方法 ? Clear方法 刪除列表框中的所有項目,其語法為: 項目列表框 .clear 控件 ——組合框的常用屬性 ? Style 屬性 Style屬性返回 /設置一個值,該值用來指示組合框的顯示類型和行為,且為只讀。其取值如下: 0(默認值) ——下拉式組合框。由文本框和下拉列表組成,可以輸入、可選擇、可折疊。 1——簡單組合框。由文本框和固定列表框組成,可以輸入、可選擇、不可折疊。 2——下拉式列表框。僅由下拉式列表框組成,不可以輸入、可選擇、可折疊。 控件 ——組合框的常用屬性 ? Text 屬性 當 Style屬性設置為 0或 1 時, Text屬性返回 /設置編輯框中的文本; Style屬性為 2時 Text屬性返回列表框中選擇的項目。 控件 ——常用事件和方法 ? AddItem方法 ? Clear方法 ? RemoveItem方法 控件應用 ?【 實例 】 制作花卉展示窗體 代碼設計 ?花卉類型選擇代碼: Private Sub cmbtype_Click() If = 玫瑰 Then 玫瑰 1 玫瑰 2 玫瑰 3 代碼設計 Else 菊花 1 菊花 2 菊花 3 菊花 4 End If End Sub 代碼設計 ? 花卉名稱選擇代碼: Private Sub lstname_Click() If = 玫瑰 Then Select Case Case 0 = LoadPicture() Case 1 = LoadPicture() Case 2 = LoadPicture() End Select 代碼設計 Else Select Case Case 0 = LoadPicture() Case 1 = LoadPicture() Case 2 = LoadPicture() Case 3 = LoadPicture() End Select End If End Sub 案例 ——成績分析工具 案例 ——代碼設計 ?添加組合框中項目的代碼 Private Sub Form_Load() Mary,06123 John,06124 Jeck,06125 …… Paul,06131 Tony,06132 End Sub 案例 ——代碼設計 ?將組合框選中項目添加到文本框( txtin) Private Sub txtin_GotFocus() = + End Sub 案例 ——代碼設計 ?排 “ 名次 ” 代碼 –排序代碼 –查找位置代碼 案例 ——代碼設計 ?排序代碼 39。求名次 39。將每個學生的學號和最后成績賦值給數(shù)組 num和 score For i = 1 To M num(i) = studentn(i, 2) score(i) = students(i, 4) Next i 案例 ——代碼設計 39。按數(shù)組 score排序,學號與成績同步交換 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 案例 ——代碼設計 ? 查找位置代碼 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的值為名次。 案例 ——代碼設計 ? 成績分析代碼 1. 求出最大、最小及總和 2. 計算各分數(shù)段人數(shù)及平均值 3. 輸出統(tǒng)計結果 案例 ——代碼設計 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) 案例 ——代碼設計 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) 案例 ——代碼設計 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 案例 ——代碼設計 Case 6 scount(4) = scount(4) + 1 Case Is 6 scount(5) = scount(5) + 1 End Select Next i ave = sum / M 39。平均值 案例 ——代碼設計 ?輸出統(tǒng)計結果 For i = 1 To 5 lbls(i 1).Caption = Str$(scount(i)) Next i