- Visual Basic實例精通
- 柴相花等編著
- 2244字
- 2019-03-01 14:47:22
第5章 基本函數
前面介紹了VB語言基礎中的相關內容,了解了VB的標識符、常量、變量、數據類型、數組以及VB的基本語句和過程的運用。本章接著介紹VB語言基礎中的另外一部分也是最后一部分——函數。
5.1 CurDir返回當前路徑
本節介紹CurDir函數,該函數用于將代表當前路徑的變量作為返回值返回到當前程序中,是一種非常有用的獲取文件或文件夾路徑的函數,希望通過本節的介紹,對該函數有更深入的了解。
技術要點
在本實例中主要使用的技術是CurDir函數、常數vbCrlf、對象App以及Path屬性。主要功能和用法如下:
●CurDir函數,主要用于返回當前的路徑。其中,參數driver表示存在驅動器的字符串表達式,當省略該參數時,則CurDir返回當前驅動器的路徑。
●常數vbCrlf,表示回車和換行符的組合常數,等價于Chr$(13)+Chr$(10)。
●對象App,可以表示雙重含義,當單獨使用時表示一個屬性,主要用于返回一個App對象;當與屬性 Path 組合使用時表示一個對象,表示應用于列表中的對象。
● Path屬性,表示一個指示路徑的字符串,該屬性有兩種用法,分別表示返回或設置當前路徑和返回指定文件、文件夾或驅動器的路徑。
Pat第一種用法的語法格式:
Object.Path[=PathName]
其中,參數Object表示應用于列表中的對象,數據類型是對象型;參數PathName表示獲得的路徑名,數據類型是字符串類型。
第二種用法的語法格式:
Object.Path
其中,參數Object表示具體的文件名、文件夾名或驅動器名。
實現代碼
Private Sub Form_Click() Dim MyPath As String '定義字符型變量 Dim ComStr As String '定義字符型變量 MyPath = CurDir '由CurDir獲得當前路徑 TxtShow.Text="當前路徑為:"&vbCrLf&MyPath&Space(5)&"- >CurDir" '顯示返回的路徑 ComStr = App.Path & Space(2)& " - >App.Path" '獲得當前路徑 TxtCom.Text = ComStr '顯示當前路徑 End Sub
單擊工具欄中的保存按鈕,保存工程,然后單擊工具欄中的啟動按鈕
運行工程,程序運行結果如圖5.1所示。

圖5.1 程序運行界面圖
然后單擊工具欄中的結束按鈕,或者單擊運行窗口的關閉按鈕
,結束程序的運行。
源程序解讀
(1)在Form_ Click()事件中,首先定義了兩個字符串變量MyPath和ComStr,分別存儲由CurDir和App.Path獲得的路徑。
(2)然后,運用CurDir函數獲得當前的路徑并賦值給變量MyPath,并用“TxtShow”文本框在窗體上顯示出來。
(3)最后,由App.Path獲得當前路徑并賦值給變量ComStr,并用“TxtCom”文本框在窗體上顯示出來,主要用于跟上面獲得的路徑進行比較。
5.2 CurDir記錄登錄日志
在上節中介紹了函數CurDir返回當前路徑的功能,并與App.Path返回的當前路徑進行比較,從而說明CurDir函數的有效性。本節接著介紹函數CurDir的另外功能,即記錄登錄日志。
技術要點
本實例中主要用到的技術是Print方法、Open方法、Close方法和CurDir函數。主要功能和用法如下:
●Open方法,主要用于打開一個已知的文件,在本例中,Open方法打開日志文件主要進行的操作是追加字符串。
● Close方法,主要用于關閉一個打開的文件。
● CurDir函數,在本例中主要是返回日志文件的當前路徑。
Print方法主要用于在窗體、圖片框、立即窗口等對象上面顯示字符串,具體使用語法為:
[Object.]Print [OutputList]
這種語法的詳細情況在前面已經介紹過,在此介紹Print方法的另一種應用方法:
Print Object,[OutputList]
這種用法表示在對象Object上面顯示OutputList的內容,如本例中,在日志文件中顯示登錄信息。
實現代碼
Dim mSky '定義一個可變型變量 '退出事件 Private Sub CmdExit_Click() Unload Me '卸載窗體 End Sub '登錄事件 Private Sub CmdLogin_Click() Dim Tstr As String '定義一個字符串變量 mSky = mSky + 1 '變量增1 Text1.Text = "Text" & Str$(mSky) '顯示第幾個登錄文本 Tstr = TxtName.Text & Space$(6)& _ TxtPassWord.Text & Space$(6)& _ Text1.Text & Space$(2)& _ CStr(Date& Space$(1)& Time) '記錄登錄信息 TxtShow.Text = Tstr '顯示登錄信息 Open (CurDir & "\登錄日志.ini")For Append As#2 '追加記錄 Print #2,Tstr '把記錄寫入日志 Close#2 '關閉日志 End Sub '初始化文本框的屬性 Private Sub Form_Load() TxtName.Text = "BlueSky" '給文本框的Text屬性賦初值 TxtPassWord.Text = "123456" '給文本框的Text屬性賦初值 Text1.Visible = False '使得文本框不可見 End Sub
按Ctrl+S組合鍵保存工程,然后按F5鍵運行工程。單擊啟動按鈕后,程序運行結果如圖5.2所示。單擊“Login”按鈕時,程序運行結果如圖5.3所示。

圖5.2 初始狀態的運行界面圖

圖5.3 登錄之后的運行界面圖
源程序解讀
(1)代碼首先定義了一個整型變量mSky,用來表示用戶的登錄次數。
(2)在Form_ Load()事件中,分別初始化“TxtName”文本框、“TxtPassWord”文本框和“Text1”文本框。分別賦值為:“BlueSky”、“123456”、Visible的屬性為False。
(3)當單擊“CmdLogin”命令按鈕時,就觸發CmdLogin_ Click()事件。在該事件中,首先定義一個字符串變量Tstr用來存儲登錄產生的記錄。然后,把變量mSky的值增1,并給“Text1”文本框賦值,表示登錄的文本次數。最后,把登錄的信息賦值給變量Tstr,并運用“TxtShow”文本框在窗體上顯示出來。
(4)接下來,使用Open方法打開日志文件把登錄信息追加到日志文件中,執行完畢后關閉日志文件。
(5)最后,當單擊“CmdExit”命令按鈕時,就觸發CmdExit_ Click()事件,執行退出窗體的操作。
說明:實例中Close方法后面的文件號#2可以省略。
5.3 Dir查找所有目錄
在前面兩節中介紹了 CurDir函數的用法,希望讀者通過前兩節的學習能夠熟練運用CurDir函數。本節繼續介紹另外一種函數——Dir,這個函數主要用來返回文件、文件夾或目錄的名稱。
技術要點
本實例運用的主要技術是Dir函數和Exit語句,主要功能和用法如下:
● Dir函數,主要用于返回當前目錄下的文件名、文件夾名或目錄名。
● Exit語句,主要用來退出一個過程或模塊。
Dir函數的具體語法如下:
Dir [(pathname[,attributes])]
其中,參數pathname,主要用于指定文件名的字符串表達式,可能包含目錄、文件夾或驅動器,如果沒有查找到pathname,則返回空字符串。在本例中,pathname就是包含各個驅動器的字符串;參數attributes主要用來指定文件的屬性,是常數或數值表達式,如果省略,則返回沒有屬性的文件,attributes的設置有很多種:當設置為vbNormal時,表示沒有屬性的文件;當設置為vbReadOnly時,表示沒有屬性的只讀文件;當設置為vbHidden時,表示沒有屬性的隱藏文件;當設置為VbSystem時,表示沒有屬性的系統文件;當設置為vb-Volume時,表示卷標文件;當設置為vbDirectory時,表示沒有屬性的文件及其路徑和文件夾。
Exit語句的具體語法如下:
Exit [Object]
其中,Object就是要結束的對象,可以是一個過程Sub,一個函數Function,一個循環語句Do、For,也可以是過程Property。
實現代碼
'組合框的Click事件 Private Sub CmbS_Click() Dim strPath As String '定義字符串變量 Select Case CmbS.ListIndex Case 0 TxtShow.Text = "" '清空文本框中的內容 strPath = Dir("C:\",vbDirectory) '獲得當前路徑C盤下的目錄名 Case 1 TxtShow.Text = "" '清空文本框中的內容 strPath = Dir("D:\",vbDirectory) '獲得當前路徑D盤下的目錄名 Case 2 TxtShow.Text = "" '清空文本框中的內容 strPath = Dir("E:\",vbDirectory) '獲得當前路徑E盤下的目錄名 Case 3 TxtShow.Text = "" '清空文本框中的內容 strPath = Dir("F:\",vbDirectory) '獲得當前路徑F盤下的目錄名 End Select Do If strPath < > vbNullString Then TxtShow.Text = TxtShow.Text & vbCrLf & strPath '顯示查找的目錄名 Else Exit Do '退出Do循環 End If strPath = Dir() '接著查找下一個目錄 Loop End Sub '初始化組合框,添加盤符類型 Private Sub Form_Load() CmbS.AddItem "C" '在組合框中添加"C" CmbS.AddItem "D" '在組合框中添加"D" CmbS.AddItem "E" '在組合框中添加"E" CmbS.AddItem "F" '在組合框中添加"F" End Sub
按Ctrl+S組合鍵保存工程,然后按F5鍵運行工程。在C盤中查找目錄的運行結果如圖5.4所示。在D盤中查找目錄的運行結果如圖5.5所示。

圖5.4 在C盤查找目錄的界面圖

圖5.5 在D盤查找目錄的界面圖
源程序解讀
(1)在Form_ Load()事件中,初始化“CmbS”組合框,分別添加盤符的類別:C,D,E, F。然后,當單擊“CmbS”組合框時,就觸發CmbS的Click事件。
(2)在CmbS_ Click()事件中,運用Select Case語句,根據“CmbS”組合框的ListIndex屬性,對各個盤符分別查找目錄。在每個語句塊中,都要先把“TxtShow”文本框的內容清空。
(3)然后,利用Dir函數返回當前盤符下的目錄名。
(4)最后,運用Do循環語句繼續查找該盤符下的下一個目錄名,直到查找完畢。并把最終查找的目錄名集合在文本框中顯示出來。
5.4 運用Fix和Rnd函數進行乘法運算
在前面小節中分別介紹了CurDir函數和Dir函數,這兩種函數基本上都與文件的存取有關,但又不是純粹的文件處理函數。本節介紹另外兩種函數——Fix函數和Rnd函數的運用實例。
技術要點
本節實例中主要使用的技術是Fix函數、Rnd函數和Randomize語句。主要功能和用法如下:
● Fix函數,是VB數學函數中的取整函數。
● Rnd函數,主要用于產生一個隨機的單精度類型的數值。
● Randomize語句,主要用來初始化隨機數產生器。
Fix函數的具體語法為:
Fix(number)
其中,參數number表示雙精度類型的數值或任何有效的數值表達式,如果number<0,則Fix會返回大于 number的最小負整數。并且 Fix函數不遵從四舍五入的原則,而是把number的小數部分直接去掉。
Rnd函數的具體語法為:
Rnd[(Number)]
其中,參數Number,表示一個單精度數值或任何有效的數值表達式。根據Number值的不同,Rnd的返回值也不同,當Number<0時,每次返回值都使用Number作為隨機數種子得到的相同結果;當Number>0時,返回值為序列中的下一個隨機數;當Number=0時,返回值為最近生成的數;當Number被省略時,返回值為序列中的下一個隨機數。
Randomize語句的具體語法為:
Randomize[number]
其中,參數number是可變型或任何有效的數值表達式,該參數將Rnd函數的隨機數生成器初始化,該隨機數生成器給number一個新的種子值。如果省略number,則用系統計時器返回的值作為新的種子值。
實現代碼
Dim a,b,c As Integer '定義三個整型變量 '退出系統事件 Private Sub CmdExit_Click() Unload Me '卸載窗體 End Sub '出題目事件 Private Sub CmdGT_Click() Randomize '初始化隨機數產生器 a = Fix(7 * Rnd + 1) '產生隨機數 b = Fix(6 * Rnd + 1) '產生隨機數 TxtTitle.Text = Str$(a)+ " ×" + Str$(b)+ " =" '出題 TxtResult.Text = "" '清空文本框TxtResult中內容 TxtJudge.Text = "" '清空文本框TxtJudge中內容 CmdJR.Enabled = True '使得CmdJR能被按下 CmdJR.Default = True '使得CmdJR為默認按鈕 CmdGT.Enabled = False '使得CmdGT不能被按下 TxtResult.SetFocus '將焦點設置在TxtResult中 End Sub '判斷結果事件 Private Sub CmdJR_Click() c = Val(TxtResult.Text) '得到所填的結果 If c = 0 Then Exit Sub '如果乘積為0退出過程 If c = a * b Then '判斷乘積結果與填的結果是否相等 TxtJudge.Text = "正確" '顯示判斷結果 Else TxtJudge.Text = "錯誤" '顯示判斷結果 End If CmdGT.Enabled = True '使得CmdGT能被按下 CmdGT.Default = True '使得CmdGT為默認按鈕 CmdJR.Enabled = False '使得CmdJR不能被按下 End Sub '窗體活動時的事件 Private Sub Form_Activate() CmdGT_Click '執行CmdGT單擊事件 End Sub
按Ctrl+S組合鍵保存工程,然后按F5鍵運行工程。當輸入正確計算結果時,程序的運行結果如圖5.6所示。當輸入錯誤計算結果時,程序的運行結果如圖5.7所示。

圖5.6 輸入正確結果時的界面圖

圖5.7 輸入錯誤結果時的界面圖
源程序解讀
(1)代碼首先定義了三個整型變量a、b、c,分別表示被乘數、乘數和積的判斷量。
(2)在Form_ Activate()事件中,調用CmdGT_ Click()事件。
(3)在CmdGT_ Click()事件中,首先由Randomize語句初始化隨機數產生器。然后,由Fix函數和Rnd函數共同得到被乘數和乘數并分別賦值給變量a和b。接著由“TxtTitle”文本框顯示出兩個數的乘式,并置“TxtResult”文本框和“TxtJudge”文本框的內容為空。另外,分別置“CmdJR”命令按鈕的Enable和Defult屬性為True,“CmdGT”命令按鈕的Enable屬性為False,“TxtResult”文本框的SetFoucs屬性。
(4)當在“TxtResult”文本框中填寫出計算結果后,就單擊“CmdJR”按鈕,繼而觸發Cmd-JR_ Click()事件。
(5)在CmdJR_ Click()事件中,首先把填寫的結果賦值給變量c。然后,判斷c與a*b的結果是否相同。如果相同,則置TxtJudge的內容為“正確”;否則置TxtJudge的內容為“錯誤”。另外,分別置“CmdGT”命令按鈕的Enable和Defult屬性為True。“CmdJR”命令按鈕的Enable屬性為False。
(6)當單擊“CmdExit”命令按鈕時,就執行退出窗體的操作。
說明:取整函數,除了Fix之外,還有Int函數,兩個的唯一區別是,當number<0時, Int函數返回小于number的最大負整數。
5.5 運用Format函數進行數據類型轉換
在上一節中介紹了VB數學函數中的取整函數Fix,最后還提到與另外一個取整函數Int的區別,希望讀者在運用時注意這一點。本節介紹另外一種格式化的函數——Format的應用實例,即進行數據類型的轉換。
技術要點
本實例中使用的主要技術是Format函數,該函數主要作用是根據設定的格式格式化表達式。具體語法為:
Format (expression [,format [,firstdayofweek[,firstweekofyear]]])
其中各參數的含義如下:
●參數expression表示任何有效的表達式,即被格式化的表達式。
●參數format表示設定的格式,是有效的命名表達式或用戶自定義格式表達式。
●參數firstdayofweek表示一周的第一天,是個常數。設置方式有:vbUseSystem,VbSunday,vbMonday,vbTuesday,vbWednesday,vbThursday,vbFriday,vbSaturday,其中設置值的含義是顯而易見的,省略時默認為VbSunday。
●參數firstweekofyear表示一年的第一周,也是個常數。設置方式有:vbUseSystem,vbFirstJan1,vbFirstFourDays,VbFirstFullWeek,各設置值的含義依次是:使用系統設置;從包含一月一日的那一周開始;從本年第一周開始,而此周至少有四天在本年中;從本年第一周開始,而此周完全在本年中,省略時,默認為vbFirstJan1。
說明:Format函數格式化的對象包括數字、日期、時間和字符串。
實現代碼
Dim Mystr As String '定義字符串變量 Private Sub CmdChange_Click() TxtDate.Text = "" '置“TxtDate”文本框的內容為空 TxtNumber.Text = "" '置“TxtNumber”文本框的內容為空 Label1.Caption = "顯示系統當前時間和日期:" '置“Label1”標簽的標題內容 Mystr = Format$(Date,"M/d/yy") '格式化當前日期 '顯示格式化后的系統時間 TxtDate.Text = Mystr & " 按月/日/年顯示系統日期" Mystr = Format$(Date,"d-mmmm-yy") '按照給定的格式格式化系統時間 '顯示格式化后的系統時間 TxtDate.Text = TxtDate.Text & vbCrLf & Mystr & " 按日/月份全名/年顯示系統日期" Mystr = Format$(Date,"mmmm-yy") '按照給定的格式格式化系統時間 '顯示格式化后的系統時間 TxtDate.Text = TxtDate.Text & vbCrLf & Mystr & " 按月份全名-年顯示系統日期" Mystr = Format$(Date,"yyyy-mm-dd") '按照給定的格式格式化系統時間 '顯示格式化后的系統時間 TxtDate.Text = TxtDate.Text & vbCrLf & Mystr & " 按yyyy年-mm月-dd日顯示系統日期" Mystr = Format$(Date,"yyyy-m-d") '按照給定的格式格式化系統時間 '顯示格式化后的系統時間 TxtDate.Text = TxtDate.Text &vbCrLf &Mystr&" 按yyyy年-m月-d日顯示系統日期" Mystr = Format$(Date,"yyyy年m月d日") '按照給定的格式格式化系統時間 '顯示格式化后的系統時間 TxtDate.Text = TxtDate.Text & vbCrLf & Mystr & " 按yyyy年m月d日顯示系統日期" Mystr = Format$(Time,"h小時:m分s秒") '按照給定的格式格式化系統時間 '顯示格式化后的系統時間 TxtDate.Text = TxtDate.Text & vbCrLf & Mystr & " 按h小時m分s秒顯示系統時間" Mystr = Format$(Time,"hh:mm:ss") '按照給定的格式格式化系統時間 '顯示格式化后的系統時間 TxtDate.Text = TxtDate.Text & vbCrLf & Mystr & " 按hh小時mm分鐘ss秒顯示系統時間" '顯示格式化后的系統時間 Mystr = Format$(Time,"h時m分s秒 AM/PM") '按照給定的格式格式化系統時間 '顯示格式化后的系統時間 TxtDate.Text = TxtDate.Text & vbCrLf & Mystr & " 按h小時m分s秒 AM或PM顯示系統時間" Mystr = Format$(0.89669,"0.000") '按照給定的格式格式化數字 '顯示格式化后的數字 TxtNumber.Text = Mystr & " 小數點后保留3位顯示金額" Mystr = Format$("0.8963"," ¥ 0.000") '按照給定的格式格式化數字 '顯示格式化后的數字 TxtNumber.Text = TxtNumber.Text & vbCrLf & Mystr & " 顯示帶人民幣符號的金額" Mystr = Format$(23890.34,"##,0.00") '按照給定的格式格式化數字 '顯示格式化后的數字 TxtNumber.Text = TxtNumber.Text & vbCrLf & Mystr & " 顯示帶千位符的金額" Mystr = Format$("0.89","0%") '按照給定的格式格式化數字 '顯示格式化后的數字 TxtNumber.Text = TxtNumber.Text & vbCrLf & Mystr & " 顯示百分數" '按照給定的格式格式化數字 Mystr = Format$("23423545645645877345111111999999","0.00E+00") '顯示格式化后的數字 TxtNumber.Text = TxtNumber.Text & vbCrLf & Mystr & " 將數值顯示為科學計數法的格式" Mystr = Format$("mr","@@@@") '按照給定的格式格式化數字 '顯示格式化后的數字 TxtNumber.Text = TxtNumber.Text & vbCrLf & Mystr & " 在指定的字符前加一定數量的空格" End Sub '窗體變為活動時的事件 Private Sub Form_Activate() Dim MyTime,MyDate As Date '定義兩個時期型變量 Label1.Caption = "顯示設定的時間和日期:" MyTime = #2:14:30 PM# '設定時間 MyDate = #9/2/2008# '設定日期 '以系統設置的長時間格式返回當前系統時間 Mystr = Format$(Time,"Long Time") TxtDate.Text = Mystr '以系統設置的長日期格式返回當前系統日期 Mystr = Format$(Date,"Long Date") TxtDate.Text = TxtDate.Text & vbCrLf & Mystr Mystr = Format$(MyTime,"h:m:s") '返回 "14:14:30" TxtDate.Text = TxtDate.Text & vbCrLf & Mystr '顯示"14:14:30" Mystr = Format$(MyTime,"hh:mm:ss AMPM") '返回 "02:14:30 PM" TxtDate.Text = TxtDate.Text & vbCrLf & Mystr '顯示"02:14:30 PM" Mystr = Format$(MyDate,"dddd,mmm d yyyy") '返回 "Tuesday,Sep 2 2008" TxtDate.Text = TxtDate.Text & vbCrLf & Mystr '顯示"Tuesday,Sep 2 2008" Mystr = Format$(896) '返回 "896" TxtNumber.Text = Mystr '顯示"896" '用戶自定義的格式 Mystr = Format$(8659.6,"##,##0.00") '返回 "8,659.60" TxtNumber.Text = TxtNumber.Text & vbCrLf & Mystr '顯示"8,659.60" Mystr = Format$(669.9,"###0.00") '返回 "669.90" TxtNumber.Text = TxtNumber.Text & vbCrLf & Mystr '顯示"669.90" Mystr = Format$(8,"0.00%") '返回 "800.00%" TxtNumber.Text = TxtNumber.Text & vbCrLf & Mystr '顯示"800.00%" Mystr = Format$("HELLO"," <") '返回 "hello" TxtStr.Text = Mystr '顯示"hello" Mystr = Format$("This is good"," >") '返回 "THIS IS GOOD" TxtStr.Text = TxtStr.Text & vbCrLf & Mystr '顯示"THIS IS GOOD" End Sub
按Ctrl+S組合鍵,保存工程,然后按F5鍵,運行工程。當單擊啟動按鈕后,程序運行結果如5.8所示。當單擊“第二種格式的變換”按鈕時,程序運行結果如圖5.9所示。

圖5.8 第一種格式化的結果圖

圖5.9 第二種格式化的結果圖
源程序解讀
(1)代碼首先定義了一個字符串變量Mystr,用來存儲格式化后的字符串。
(2)在Form_ Activate()事件中,首先定義兩個日期型變量MyTime和MyDate,分別表示時間和日期。然后,分別給兩個變量設置初始值:#2:14:30 PM#,#9/2/2008#。并把標簽Label1的Capition屬性設置為“顯示設定的時間和日期:”。最后運用Format函數,按照設定的格式顯示不同格式的時間和日期。另外,還運用Format函數,按照設定的格式顯示不同的數字和字符串。
(3)當單擊“CmdChange”命令按鈕時,就觸發CmdChange的Click事件。在CmdChange_ Click()事件中,首先把“Label1”標簽的 Capition 屬性設置為“顯示系統當前時間和日期:”。然后運用Format函數,按照設定的格式分別顯示當前系統的時間和數字。
5.6 運用Input函數輸入指定數目的文字
在前面兩節中分別介紹了專門針對數字的函數Fix和Rnd,以及針對各種有效表達式的格式化函數Format,其中Format的功能比前兩種的功能強大,在編程過程中也更常用。本節介紹另一種更常用的輸入函數——Input的應用實例,即在文本框中輸入指定數目的文字。
技術要點
本節使用的主要技術是Input函數,該函數主要用于把一定數量的字符從已知文件中輸出。具體語法格式為:
Input (number,[#]filenumber)
其中,參數number表示輸出字符的個數,是任何有效的數值表達式;參數filenumber表示文件號。
說明:Input函數只用于以Input或Binary方式打開的文件。如本例中,文件MyLove是以Input方式打開的。
實現代碼
Dim MyStr As String '定義字符串變量 '命令按鈕CmbSN的Click事件 Private Sub CmbSN_Click() Open App.Path & "\MyLove.txt" For Input As#1 '打開輸出文件 Select Case CmbSN.ListIndex Case 0 TxtShow.Text = "" '置文本框的內容為空 MyStr = Input(100,#1) '輸出文字 Close '關閉文件 Case 1 TxtShow.Text ="" '置文本框的內容為空 MyStr = Input(200,#1) '輸出文字 Close '關閉文件 Case 2 TxtShow.Text = "" '置文本框的內容為空 MyStr = Input(300,#1) '輸出文字 Close '關閉文件 Case 3 TxtShow.Text = "" '置文本框的內容為空 MyStr = Input(360,#1) '輸出文字 Close '關閉文件 End Select TxtShow.Text = MyStr '顯示輸出文字 End Sub '初始化組合框,添加輸出字符的個數 Private Sub Form_Load() CmbSN.AddItem "100" '在組合框中添加"100" CmbSN.AddItem "200" '在組合框中添加"200" CmbSN.AddItem "300" '在組合框中添加"300" CmbSN.AddItem "360" '在組合框中添加"360" End Sub
按Ctrl+S組合鍵,保存工程,然后按F5鍵,運行工程。當選擇組合框中的“100”選項時,程序的運行結果如圖5.10所示。當選擇組合框中的“200”選項時,程序的運行結果如圖5.11所示。

圖5.10 輸入100個字符時的運行結果圖

圖5.11 輸入200個字符時的運行結果圖
源程序解讀
(1)代碼首先定義一個字符串變量MyStr,用來存儲輸入的字符。
(2)在Form_ Click()事件中,初始化“CmbSN”組合框,運用組合框控件的AddItem方法在組合框中分別添加輸入字符的個數:100,200,300,360。當單擊“CmbSN”組合框時,就觸發CmbSN的Click事件。
(3)在CmbSN_ Click()事件中,首先運用Open語句打開當前路徑下的文件MyLove,并且以輸出方式打開文件。
(4)其次,運用Select Case語句,根據CmbSN的ListIndex屬性的值,運用Input函數分別輸出不同個數的字符。
(5)最后,關閉文件并把輸入的字符由“TxtShow”文本框顯示出來。
注意:與Input#語句不同,Input函數返回它所讀出的所有字符,包括逗號、回車符、空白列、換行符、引號和前導空格等。
5.7 InputBox輸入用戶信息
在上一節中介紹了輸出函數Input,這個函數主要針對從某個文件中讀取一定個數的字符,并且這種函數輸出的字符通常用Print#語句或Put語句寫入文件,本節介紹另外一種輸入函數——InputBox的應用實例,即輸入用戶信息。
技術要點
在本實例中用到的主要技術是InputBox函數和MsgBox函數。
InputBox函數,主要用于在對話框來中顯示提示,并根據提示信息等待用戶輸入正文或按下按鈕,然后返回包含文本框內容的字符串。具體語法為:
InputBox (prompt [,title][,default][,xpos][,ypos][,helpfile,context])
其中各參數的含義如下:
●參數prompt表示對話框中的提示信息,是字符串表達式。prompt的最大長度約是1024個字符,由所用字符的寬度決定。如果prompt有多行,則可以在各行之間用回車符(Chr(13))、換行符(Chr(10))或回車換行符的組合(vbCrlf)來分隔。
●參數title表示對話框標題欄中的信息,是字符串表達式。如果省略title,則標題欄中顯示應用程序的名稱。
●參數default表示文本框中的字符串表達式,在沒有其他輸入時作為默認值。如果省略default,則表示文本框為空。
●參數xpos表示對話框的左邊與屏幕左邊的水平距離,是數值表達式。如果省略xpos,則表示對話框在水平方向居中。
●參數ypos表示對話框的上邊與屏幕上邊的垂直距離,是數值表達式。如果省略ypos,則表示對話框在屏幕垂直方向距下邊大約三分之一的位置。
●參數helpfile表示幫助文件,即用該文件為對話框提供上下文相關的幫助,是字符串表達式。如果有參數helpfile,則表示后面有參數context。
●參數context表示由幫助文件的作者指定給某個幫助主題的幫助上下文編號,是數值表達式。同樣,如果有參數context,則必須有參數helpfile。
MsgBox函數,主要用于在對話框中顯示消息,等待用戶單擊按鈕,并返回一個整型變量告訴用戶單擊哪一個按鈕。具體語法為:
MsgBox (prompt [,buttons][,title][,helpfile,context])
其中,參數buttons表示對話框上顯示按鈕的數目及形式,在對話框上使用的圖標樣式顯示出來,是數值表達式。如果省略該參數,則buttons的默認值為0。其他參數的含義跟前面介紹的一樣。
實現代碼
'組合框控件CmbName的Click事件 Private Sub CmbName_Click() Dim StrP,StrPPut As String '定義兩個字符串變量 Select Case CmbName.ListIndex Case 0 StrP = "123456" '設置密碼 StrPPut = InputBox("請輸入Administor對應密碼:") '輸入密碼 Case 1 StrP = "000000" '設置密碼 StrPPut = InputBox("請輸入Guster對應密碼:") '輸入密碼 Case 2 StrP = "111111" '設置密碼 StrPPut = InputBox("請輸入User對應密碼:") '輸入密碼 End Select If StrPPut = StrP Then TxtPassWord.Text = StrPPut '顯示輸入密碼 MsgBox "登錄成功!",vbOKOnly,"提示信息!" '提示登錄成功 Else MsgBox "登錄失敗!",vbOKOnly,"提示信息!" '提示登錄失敗 End '退出過程 End If End Sub '卸載窗體事件 Private Sub CmdExit_Click() Unload Me '卸載窗體 End Sub '初始化組合框,添加用戶名 Private Sub Form_Load() CmbName.AddItem "Administor" '在組合框中添加"Administor" CmbName.AddItem "Guster" '在組合框中添加"Guster" CmbName.AddItem "User" '在組合框中添加"User" End Sub
單擊工具欄中的保存按鈕,保存工程,然后單擊工具欄中的啟動按鈕
,運行工程。當選擇組合框中的“Administor”項時,程序的運行結果如圖5.12所示。當輸入正確密碼,并單擊“確定”按鈕時,程序運行結果如圖5.14和圖5.13所示。當輸入錯誤密碼,并單擊“確定”按鈕時,程序運行結果如圖5.15所示。

圖5.12 輸入Administor對應密碼界面圖

圖5.13 Administor成功登錄界面圖

圖5.14 成功登錄提示框界面圖

圖5.15 登錄失敗提示框界面圖
然后單擊工具欄中的結束按鈕,或者單擊運行窗口的關閉按鈕
,結束程序的運行。
源程序解讀
(1)在Form_ Click()事件中,初始化“CmbName”組合框。使用組合框控件的AddItem方法分別加載用戶名:Administor、Guster和User。
(2)當單擊“CmbName”組合框時,就觸發CmbName_ Click()事件。
(3)在CmbName_ Click()事件中,首先定義兩個字符串變量StrP和StrPPut,分別存儲設定的密碼和輸入的密碼。然后運用Select Case語句,根據組合框的ListIndex屬性的值,分別設置不用用戶名對應的密碼,并使用InPutBox函數輸入登錄密碼存儲到變量StrPPut中。接下來,比較變量StrPPut和變量StrP的值。如果相等,則顯示登錄密碼,并由MsgBox提示框提示“登錄成功”;否則由MsgBox提示框提示“登錄失敗”。
(4)當單擊命令按鈕CmdExit時,就觸發CmdExit_ Click()事件,執行退出窗體的操作。
5.8 IsNumeric判斷輸入內容是否為數字
在前面兩節中分別介紹了輸入函數Input和InputBox函數,這兩個函數的在調試程序時非常有用。此外,前面還介紹了針對數字的函數Fix函數和Rnd函數,本節要介紹另外一種針對數字的函數——IsNumeric的應用實例,即判斷輸入內容是否為數字,并計算圓的周長和面積。
技術要點
在本實例中用到的主要技術是IsNumberic函數,該函數主要用于指明表達式的結果是否是數字,函數返回值的數據類型是布爾型。具體語法為:
IsNumeric(expression)
其中,參數expression表示一個可變型,可以是數值表達式或字符串表達式。如果ex-pression的運算結果是數字,函數的返回值是True,否則,函數返回值是False。
實現代碼
Const Pi As Single = 3.1415 '定義常量 Dim Perimeter As Single '定義變量周長 Dim Radius As Single '定義變量半徑 Dim Area As Single '定義變量面積 Dim Volume As Single '定義變量體積 '命令按鈕CmbType的Click事件 Private Sub CmbType_Click() Select Case CmbType.ListIndex Case 0 If TxtInput.Text = "" Then '判斷文本框中的內容是否為空 MsgBox "請輸入半徑!",64,"信息提示" '輸入半徑的提示 TxtInput.Text = "" '置文本框TxtInput的內容為空 TxtInput.SetFocus '使光標停留在文本框TxtInput中 ElseIf Not IsNumeric(TxtInput.Text)Then '判斷文本框中的內容是否是數字 MsgBox"請輸入正確的半徑值!",64,"信息提示' "輸入正確半徑值的提示 TxtInput.Text = "" '置文本框TxtInput的內容為空 TxtInput.SetFocus '使光標停留在文本框TxtInput中 Else Radius = Val(TxtInput.Text) '把文本框中半徑的值賦值給變量Radius Perimeter = Pi *2 * Radius '計算圓的周長 LabShow.Caption = "圓的周長為:" &Perimeter'顯示圓的周長 TxtResult.Text = Perimeter '顯示計算結果 End If Case 1 If TxtInput.Text = "" Then '判斷文本框中的內容是否為空 MsgBox "請輸入半徑!",64,"信息提示" '輸入半徑的提示 TxtInput.Text = "" '置文本框TxtInput的內容為空 TxtInput.SetFocus '使光標停留在文本框TxtInput中 ElseIf Not IsNumeric(TxtInput.Text)Then '判斷文本框中的內容是否是數字 MsgBox "請輸入正確的半徑值!",64,"信息提'輸示入"正確半徑值的提示 TxtInput.Text = "" '置文本框TxtInput的內容為空 TxtInput.SetFocus '使光標停留在文本框TxtInput中 Else Radius = Val(TxtInput.Text) '把文本框中半徑的值賦值給變量Radius Area = Pi * Radius^2 '計算圓的面積 LabShow.Caption = "圓的面積為:" & Area '顯示圓的面積 TxtResult.Text = Area '顯示計算結果 End If Case 2 If TxtInput.Text = "" Then '判斷文本框中的內容是否為空 MsgBox "請輸入半徑!",64,"信息提示" '輸入半徑的提示 TxtInput.Text = "" '置文本框TxtInput的內容為空 TxtInput.SetFocus '使光標停留在文本框TxtInput中 ElseIf Not IsNumeric(TxtInput.Text)Then '判斷文本框中的內容是否是數字 MsgBox "請輸入正確的半徑值!",64,"信息提'輸示入"正確半徑值的提示 TxtInput.Text = "" '置文本框TxtInput的內容為空 TxtInput.SetFocus '使光標停留在文本框TxtInput中 Else Radius = Val(TxtInput.Text) '把文本框中半徑的值賦值給變量 Radius Volume = 4 / 3 * Pi * Radius^3 '計算圓的體積 LabShow.Caption = "圓的面積為:" & Volume'顯示圓的體積 TxtResult.Text = Volume '顯示計算結果 End If End Select End Sub '命令按鈕CmdExit的Click事件 Private Sub CmdExit_Click() Unload Me '卸載窗體 End Sub '清空輸入半徑事件 Private Sub CmdNull_Click() TxtInput.Text = "" '清空文本框TxtInput中的內容 TxtInput.SetFocus '使光標停留在文本框TxtInput中 TxtResult.Text = "" '清空文本框TxtResult中的內容 LabShow.Caption = vbNullString '清空標簽LabShow中的內容 CmbType.ListIndex = -1 '使得組合框的ListIndex屬性值指向最初的前 一項 End Sub '初始化組合框,添加計算類型 Private Sub Form_Load() CmbType.AddItem "周長" '在組合框中添加"周長"項 CmbType.AddItem "面積" '在組合框中添加"面積"項 CmbType.AddItem "體積" '在組合框中添加"體積"項 End Sub
單擊工具欄中的保存按鈕,保存工程,然后單擊工具欄中的啟動按鈕
,運行工程。當選擇組合框中的“周長”項時,程序運行結果如圖5.16所示。當選擇組合框中的“面積”項時,程序運行結果如圖5.17所示。當選擇組合框中的“體積”項時,程序運行結果如圖5.18所示。當單擊“清空半徑值”按鈕時,程序運行結果如圖5.19所示。

圖5.16 圓的周長計算結果圖

圖5.17 圓的面積計算結果圖

圖5.18 圓的體積計算結果圖

圖5.19 清空后的結果圖
然后單擊工具欄中的結束按鈕,或者單擊運行窗口的關閉按鈕
,結束程序的運行。
源程序解讀
(1)代碼首先定義一個常量Pi=3.1415表示圓周率。并定義四個單精度變量Perimeter、Radius、Area和Volume,分別表示圓的周長、半徑、面積和體積。
(2)在Form_ Load()事件中,初始化“CmbType”組合框。添加計算類型子項分別為:周長,面積,體積。
(3)當單擊“CmbType”組合框時,就觸發CmbType的Click事件。
(4)在CmbType_ Click()事件中,運用Select Case,根據組合框控件ListIndex屬性的值分別計算圓的周長、面積和體積。
(5)在周長的計算過程中,首先判斷顯示半徑的文本框是否為空。如果為空,則由MsgBox函數提示框提示輸入半徑。然后把文本框置空,并把光標停留在文本框上。否則,判斷文本框中的內容是否是數字。如果不是,則由MsgBox函數提示框提示輸入正確的半徑。然后把文本框置空,并把光標停留在文本框上。否則,把文本框中的內容賦值給變量Radius。然后,按照公式計算圓的周長,并把計算結果由文本框TxtResult顯示出來,把計算類型和結果由“LabShow”標簽顯示出來。
(6)圓的面積和體積的計算過程與周長的計算過程除了計算公式不同外,其他都一樣。
(7)當單擊“CmdNull”命令按鈕時,就觸發CmdNull_ Click()事件。在該事件過程中,把“TxtInput”文本框和“TxtResult”文本框以及“LabShow”標簽的內容分別置空,并把光標停留在文本框TxtInput上。然后,把“CmbType”組合框的ListIndex屬性置為-1,在重新計算時,組合框中不顯示添加的項。
(8)當單擊“CmdExit”命令按鈕時,就觸發CmdExit_ Click()事件。在該事件中,運用Unload語句,卸載當前窗體。
- 程序員數學:用Python學透線性代數和微積分
- Python 3網絡爬蟲實戰
- Python Data Analysis(Second Edition)
- Nexus規模化Scrum框架
- SQL Server 2016數據庫應用與開發
- Java EE 7 Performance Tuning and Optimization
- 可解釋機器學習:模型、方法與實踐
- Teaching with Google Classroom
- ExtJS高級程序設計
- Mastering openFrameworks:Creative Coding Demystified
- Raspberry Pi Robotic Projects(Third Edition)
- Python語言科研繪圖與學術圖表繪制從入門到精通
- 零基礎學Python編程(少兒趣味版)
- Java并發編程之美
- Java Web應用開發給力起飛