【正文】
控件,執(zhí)行 “ 復(fù)制 ” 命令; (3)執(zhí)行 “ 粘貼 ” 命令,彈出一個(gè)對(duì)話框,詢問是否建立 控件數(shù)組,單擊 “ 是 ” 將建立控件數(shù)組,在窗體左上角 顯示一個(gè)控件,這是控件數(shù)組中的第二個(gè)控件。單擊 “ 否 ” 則不建立控件數(shù)組; (4)執(zhí)行若干次 “ 粘貼 ” 命令可以建立所需個(gè)數(shù)的控件數(shù) 組中的控件。 計(jì)算機(jī)基礎(chǔ)教研室 控件數(shù)組共享同樣的事件過程,通過返回的下標(biāo)值區(qū)分控件數(shù)組中的各個(gè)元素。 例如: Private Sub cmdName_Click(Index As Integer) … If Index = 3 then 39。處理第四個(gè)命令按鈕的操作 End If … End Sub 計(jì)算機(jī)基礎(chǔ)教研室 例如:建立含有四個(gè)命令按鈕的控件數(shù)組,當(dāng)單擊某個(gè)命令按鈕,分別顯示不同的圖形或結(jié)束操作。 Private Sub Command1_Click(Index As Integer) Select Case Index Case 0 …… 畫直線 Case 1 …… 畫矩形 “ Case 2 …… 畫圓 “ Case Else End End Select End Sub 計(jì)算機(jī)基礎(chǔ)教研室 【 例 】 設(shè)計(jì)一個(gè)窗體,模擬 “ 撥號(hào)面板 ” 。 窗體上添加一個(gè)名稱為 Text1的文本框控件(最多可接收 11個(gè)字符)和一個(gè)名稱為 Command1的命令按鈕數(shù)組(含有 Command1(0)~ Command1(9)10個(gè)數(shù)組元素),命令按鈕數(shù)組的下標(biāo)和按鈕的數(shù)字鍵標(biāo)題相對(duì)應(yīng)。再添加一個(gè)名稱為 Timer1的計(jì)時(shí)器控件(初始狀態(tài) Enabled屬性為 False, Interval屬性為 1000)和兩個(gè)名稱分別為 Command Command3的命令按鈕,其標(biāo)題分別為 “ 重?fù)?” 和 “ 結(jié)束 ” 。程序運(yùn)行后,單擊數(shù)字鍵按鈕,所撥數(shù)字顯示在文本框中;單擊 “ 重?fù)?” 按鈕,再現(xiàn)原來的撥號(hào)過程;單擊 “ 結(jié)束 ” 按鈕,結(jié)束程序。程序運(yùn)行界面如圖所示。 552 控件數(shù)組應(yīng)用實(shí)例 計(jì)算機(jī)基礎(chǔ)教研室 編寫代碼 Dim s As String, i As Integer Private Sub Command1_Click(Index As Integer) = amp。 Index End Sub Private Sub Command2_Click() s = = i = 1 = True End Sub Private Sub Timer1_Timer() = amp。 Mid(s, i, 1) i = i + 1 If i Len(s) Then Exit Sub End Sub Private Sub Command3_Click() End End Sub 計(jì)算機(jī)基礎(chǔ)教研室 561 用戶自定義數(shù)據(jù)類型 形式如下: [Public|Private] Type 自定義數(shù)據(jù)類型名 數(shù)據(jù)類型元素名 As 類型名 數(shù)據(jù)類型元素名 As 類型名 … End Type 56 用戶自定義數(shù)據(jù)類型 (也稱記錄類型 ) 一組不同類型變量的集合。相當(dāng)于 C語言中的結(jié)構(gòu)類型。 計(jì)算機(jī)基礎(chǔ)教研室 說明: (1)自定義類型一般在標(biāo)準(zhǔn)模塊 (.BAS)中定義 , 默認(rèn)是 Public;在窗體中建立必須是 Private。 (2)自定義類型中的元素類型可以是字符串 , 但應(yīng)是定長(zhǎng)字符串; (3)不要將自定義類型名和該類型的變量名混淆 , 前者表示了如同Integer、 Single等的類型名 , 后者 VB根據(jù)變量的類型分配所需的內(nèi)存空間 , 存儲(chǔ)數(shù)據(jù); (4)自定義類型一般和數(shù)組結(jié)合使用 , 簡(jiǎn)化程序的編寫 。 計(jì)算機(jī)基礎(chǔ)教研室 例如:定義了一個(gè)有關(guān)學(xué)生信息的自定義類型。 Type StudType No As Integer 39。學(xué)號(hào) Name As String * 20 39。姓名 Sex As String * 1 39。性別 Mark(1 To 4) As Single 39。 4門課程成績(jī) Total As Single 39??偡? End Type 562 建立 用戶自定義數(shù)據(jù)類型 計(jì)算機(jī)基礎(chǔ)教研室 【 例 】 輸入學(xué)生成績(jī)表中學(xué)生的學(xué)號(hào)、姓名、 3科成績(jī)等數(shù)據(jù)項(xiàng),并顯示學(xué)生成績(jī)信息。 在窗體上添加兩個(gè)框架,標(biāo)題分別為 “ 輸入信息 ” 和 “ 學(xué)號(hào) 姓名 數(shù)學(xué) 英語 語文 ” ;在框架 Frame1中添加文本框控件數(shù)組 Text1( Index為 04),在框架 Frame2中添加文本框控件 Text2;再添加兩個(gè)命令按鈕。程序運(yùn)行界面如圖所示。 563 用戶自定義類型應(yīng)用實(shí)例 計(jì)算機(jī)基礎(chǔ)教研室 編寫代碼 Private Type stu snum As String * 6 sname As String * 8 score(1 To 3) As Single End Type Private Sub Command1_Click() 39。輸入成績(jī) Dim s As stu 39。定義記錄變量 = Text1(0).Text = Text1(1).Text (1) = Text1(2).Text (2) = Text1(3).Text (3) = Text1(4).Text = amp。 amp。 Space(4) amp。 amp。 _ Str((1)) amp。 Space(4) amp。 Str((2)) amp。 Space(4) amp。 _ Str((3)) + vbCrLf End Sub 計(jì)算機(jī)基礎(chǔ)教研室 57 小結(jié) 本章介紹了數(shù)組的基本概念和使用。在程序設(shè)計(jì)中,將一組排列有序的數(shù)據(jù)組織在一起,用一個(gè)統(tǒng)一的名稱表示,這些有序數(shù)據(jù)的集合稱為數(shù)組。引進(jìn)數(shù)組后,可以解決批量數(shù)據(jù)處理問題,可以更方便靈活地組織和使用數(shù)據(jù),特別是將數(shù)組與循環(huán)結(jié)構(gòu)結(jié)合在一起,可以編寫出功能強(qiáng)大的程序。 本章通過典型實(shí)例詳細(xì)介紹了一維數(shù)組、二維數(shù)組及控件數(shù)組的聲明和使用方法。 計(jì)算機(jī)基礎(chǔ)教研室 第 6章 過程 計(jì)算機(jī)基礎(chǔ)教研室 主要內(nèi)容 61 Sub過程 62 Function過程 63 參數(shù)的傳遞 64 靜態(tài)變量 計(jì)算機(jī)基礎(chǔ)教研室 611 Sub過程的定義 Sub 過程的定義格式: [Private|Public][Static]Sub 子程序名 ([形參列表 ]) 語句塊 [Exit Sub] [語句塊 ] End Sub 61 Sub過程 計(jì)算機(jī)基礎(chǔ)教研室 關(guān)鍵字 Private和 Public和 Static只能選其一; 使用 Private,表示該過程是私有的局部過程,只能被該過程所在的窗體或標(biāo)準(zhǔn)模塊中的其他過程所調(diào)用; 使用 Public,表示該過程是公共的全局過程,可被應(yīng)用程序中的任何窗體或任何標(biāo)準(zhǔn)模塊中的過程所調(diào)用; 格式說明: 計(jì)算機(jī)基礎(chǔ)教研室 選用關(guān)鍵字 Static,表示 Sub過程也是私有過程,即它只能被本模塊的其它過程調(diào)用,而不能被其他模塊中的過程調(diào)用,但這時(shí)過程中的局部變量都是 “ Static”型的,即在每次調(diào)用過程時(shí),過程中的局部變量的值保持不變 VB默認(rèn)所有標(biāo)準(zhǔn)模塊中的子程序是 Public。 格式說明: 計(jì)算機(jī)基礎(chǔ)教研室 612 Sub過程的建立 通用過程既可以在窗體模塊中建立,也可以標(biāo)準(zhǔn)模塊中建立。 計(jì)算機(jī)基礎(chǔ)教研室 613 Sub過程的調(diào)用 第二種形式: 子程序名 [實(shí)參列表 ] 第一種形式: Call 子程序名 [(實(shí)參列表 )] 若帶有實(shí)參,則實(shí)參必須用括號(hào)括起 計(jì)算機(jī)基礎(chǔ)教研室 614 通用過程和事件過程 在 VB中的 Sub子過程分為: 事件過程和通用過程 事件過程 : 窗體事件的語法 Private Sub Form_事件名 (參數(shù)列表 ) <語句組> End Sub 控件事件的語法 Private Sub 控件名 _事件名 (參數(shù)列表 ) <語句組> End Sub 通用過程的格式為: [Private|Public][Static] Sub 過程名 [(參數(shù)表 )] 語句塊 End Sub 計(jì)算機(jī)基礎(chǔ)教研室 [Private|Public][Static] Function 函數(shù)名 [(形參列表 )][As 類型 ] 語句組 1 函數(shù)名 =函數(shù)返回結(jié)果 Exit Function End Function 定義函數(shù)過程的一般格式為 函數(shù)體 在函數(shù)體內(nèi)至少 對(duì)函數(shù)名賦值一次 62 Function過程 計(jì)算機(jī)基礎(chǔ)教研室 說明: ( 1) 函數(shù)名:命名規(guī)則與變量名規(guī)則相同 。 但不能與系統(tǒng)的內(nèi)部函數(shù)或其它通用子過程同名 , 也不能與已定義的全局變量和本模塊中模塊級(jí)變量同名 。 ( 2) 在函數(shù)體內(nèi) , 函數(shù)名可以當(dāng)變量使用 , 函數(shù)的返回值就是通過對(duì)函數(shù)名的賦值語句來實(shí)現(xiàn)的 , 在函數(shù)過程中至少要對(duì)函數(shù)名賦值一次 。 ( 3) AS類型:是指函數(shù)返回值的類型 , 若省略 , 則函數(shù)返回變體類型值 ( Variant) 。 ( 4) Exit Function:表示退出函數(shù)過程 , 常常是與選擇結(jié)構(gòu)( If或 Select Case語句 ) 聯(lián)用 , 即當(dāng)滿足一定條件時(shí) , 退出函數(shù)過程 。 ( 5)形參數(shù)列表:形參的定義與子過程完全相同。 計(jì)算機(jī)基礎(chǔ)教研室 函數(shù)過程的調(diào)用同標(biāo)準(zhǔn)函數(shù)調(diào)用,其形式為: 函數(shù)過程名 ([實(shí)參列表 ]) 注意: 實(shí)參列表中的個(gè)數(shù)必須與形參個(gè)數(shù)相同,位置與類型一一對(duì)應(yīng)??梢允峭愋偷某A?、變量、表達(dá)式。函數(shù)調(diào)用只能出現(xiàn)在表達(dá)式中,其功能是求得函數(shù)的返回值。 函數(shù)過程的調(diào)用 計(jì)算機(jī)基礎(chǔ)教研室 參數(shù)傳送: 指主調(diào)過程的實(shí)參傳遞給被調(diào)過程的形參。 ? 按位置傳送方式 ? 指名參數(shù)傳送方式 63 參數(shù)傳送 631 形式參數(shù)與實(shí)際參數(shù) 計(jì)算機(jī)基礎(chǔ)教研室 傳址: 形參得到的是實(shí)參的地址,當(dāng)形參值的改變同時(shí)也改變實(shí)參的值; 傳值: 形參得到的是實(shí)參的值,形參值的改變不會(huì)影響實(shí)參的值。 63 2 傳值與傳地址 計(jì)算機(jī)基礎(chǔ)教研室 例 :兩個(gè)變量的交換。 Sub Swap1(ByVal x%, ByVal y%) t% = x: x = y: y = t End Sub Private Sub Command1_Click() a% = 10: b% = 20: Swap1 a, b 39。傳值 Print A1=。 a, B1=。 b a = 10: b = 20: Swap2 a, b 39。傳址 Print A2=。 a, B2=。 b End Sub Sub Swap2(x%, y%) t% = x: x = y: y = t End Sub a 的地址 1 0 1 0 1 0aa x x形參實(shí)參B y V al 傳值 傳地址計(jì)算機(jī)基礎(chǔ)教研室 數(shù)據(jù)傳遞的幾點(diǎn)說明: 形參是實(shí)參的一個(gè)副本 形參、實(shí)參共用內(nèi)存單元 ,函數(shù)過程返回一個(gè)值 注意:如果實(shí)參是常量(系統(tǒng)常量、符號(hào)常量)或者表達(dá)式,則無論定義時(shí)使用值傳遞還是地址傳遞,都是按值傳遞將常量或者表達(dá)式的計(jì)算值傳遞給形參。 計(jì)算機(jī)基礎(chǔ)教研室 633 數(shù)組參數(shù)的傳遞