1 / 53

第四章 輸入介面設計

第四章 輸入介面設計. 本章投影片僅供本書上課 教師 使用 , 非經同意請勿拷貝或轉載. 4-1 TextBox 文字方塊. 第三章介紹表單上輸出訊息的常用控制項 , 本章將介紹 T extBox 文字方塊工具與輸出入對話方塊的函式與敘述。. 一、 TextBox 控制項常用的屬性.

kay-grant
Télécharger la présentation

第四章 輸入介面設計

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第四章 輸入介面設計 本章投影片僅供本書上課教師使用,非經同意請勿拷貝或轉載

  2. 4-1 TextBox文字方塊 第三章介紹表單上輸出訊息的常用控制項,本章將介紹 TextBox文字方塊工具與輸出入對話方塊的函式與敘述。 • 一、TextBox控制項常用的屬性

  3. 【注意】活用MultiLine、WordWrap 和 ScrollBars 屬性 MultiLine=False,使得超出文字方塊寬度的 資料無法顯示。MultiLine=True,可調整文字方塊的上下高度 來顯示多行文字。MultiLine=True 且 WordWrap=True時,超過 文字方塊控制項寬度的資料自動移到下一行繼續 顯示。MultiLine=True 且WordWrap=False時,則 需要進一步設定ScrollBars屬性,使其出現垂直 或水平捲動軸,才能操控範圍。

  4. 二、字串與數值的轉換函式 • 文字方塊 Text 屬性的資料是屬字串資料型別。 • 欲將 Text 屬性中的資料取出作數值運算 加法時,VB將"+"號視為字串合併運算, 發生錯誤。 減法、乘法、除法,取出的 Text 屬性值會 自動轉成數值,不發生錯誤。 • 建議 Text 屬性的資料做四則運算 先做字串轉數值後再做運算,以免發生錯誤。 • VB 提供 Val() 函式將字串轉成數值。語法: Val(str) • 若 Text 屬性值的資料含有數字和文字 Val() 函式 只將前面是數字部份轉換成數值

  5. 【例】Val("123") → 123 Val("45ABC") → 45 Val("XY4.0") → 0 ‘第一個字元非數字,傳回數值0 【例】若TextBox1.Text="22"和TextBox2.Text="11"  TextBox3.Text = TextBox1.Text + TextBox2.Text  TextBox3.Text = Val(TextBox1.Text)+Val(TextBox2.Text)  TextBox3.Text = TextBox1.Text – TextBox2.Text  TextBox3.Text = Val(TextBox1.Text)-Val(TextBox2.Text) 結果:2211 結果:33 結果:11 結果:11

  6. 【例】若TextBox1.Text="22"和TextBox2.Text="11"  TextBox3.Text = TextBox1.Text * TextBox2.Text TextBox3.Text = Val(TextBox1.Text) * Val(TextBox2.Text)  TextBox3.Text = TextBox1.Text / TextBox2.Text TextBox3.Text = Val(TextBox1.Text) / Val(TextBox2.Text) 結果:242 結果:242 結果:2 結果:2

  7. 三、TextBox 控制項常用的方法 • 表單和控制項除具有屬性外還有能執行的一些特定功能,稱為「方法」。 • 方法只能在程式執行階段才能呼叫使用。 • TextBox 控制項提供常用方法: 1. Clear()方法 將文字方塊的顯示內容清成空白。如將 TextBox1 文字方塊內顯示的文字清除寫法: TextBox1.Clear( ) 或 TextBox1.Text = ""

  8. 2. Focus()方法 • 設定控制項為駐停焦點,也就是成為作用物件。 • 如將TextBox1文字方塊設為目前駐停焦點,寫法: TextBox1.Focus() • 一個控制項擁有TabIndex、TabStop屬性,就可設為駐停焦點。 • 在程式中透過Focus()方法來指定某一控制項,成為表單目前的駐停焦點。 • 在程式執行間,不須使用者按 鍵,可直接指定某控制項成為作用物件。

  9. 表單中若有多個控制項第一個建立的控制項TabIndex屬性值為0(成為第一個作用物件);第二個為1,依此類推。表單中若有多個控制項第一個建立的控制項TabIndex屬性值為0(成為第一個作用物件);第二個為1,依此類推。 • 使用者按 鍵時,依TabIndex屬性值由小到大依序切換作用物件。 • 被指定駐停焦點控制項的Visible與Enabled屬性值皆設為「True」,此方法才有效。

  10. 【問題分析】 • 為使TextBox美金控制項程式開始就取得焦點,應該第一個建立該控制項(將其建立TabIndex屬性值設為0),使其成為第一個停駐焦點。 • 可在程式執行階段用Focus()方法,將駐停焦點移到TextBox美金控制項。 • 使用Val()函式可以將字串資料轉成數值,以便作匯率換算。 • 使用Clear()方法,可將TextBox控制項內容清成空白。

  11. 【實作】 Step1 建立表單 專案名稱命名為『us2nt』。 在表單內建立下圖所示之控制項: Step2 請按照上圖來設定各物件的屬性。 Label 1 Label 2 Label 3

  12. Step3 撰寫程式碼 ' FileName : us2nt.sln 01 Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load 02 lblRate.Text = "32.5" ‘在Form1_Load事件處理程序設定初值 03 lblNT.Text = "" 04 txtUs.TabIndex = 0 ‘設定第一個作用物件 05 End Sub 06 ' --------------------------------------------------------------------------------- 07 Private Sub btnChange_Click(ByVal sender As System. _ Object, ByVal e As System.EventArgs) Handles btnChange. _ Click 08 lblNT.Text = Val(lblRate.Text) * Val(txtUs.Text) ‘顯示匯率換算 09 End Sub 10 ' ----------------------------------------------------------------------------------

  13. 11 Private Sub btnCls_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnCls.Click 12 lblNT.Text = "" 13 txtUs.Clear() ‘用Clear方法清除txtUs的文字內容 14 txtUs.Focus() ‘用Focus方法將停駐焦點移到txtUs控制項 15 End Sub

  14. 四、TextBox 控制項的 TextChanged事件 • 是TextBox控制項的預設事件。 • 程式執行階段,當文字方塊的 Text 屬性內的資料有異動時,馬上觸動該文字方塊的TextChanged事件。因此,可將和Text屬性值有關的程式碼寫在此事件處理程序中。 • 若希望文字方塊有異動,表單上相關控制項的資料馬上跟著文字方塊的內容異動 可免去按鈕 (如確定鈕…)才知道結果。

  15. 【問題分析】 • 設定文字方塊控制項的PasswordChar屬性值以防止密碼輸入時被看到。由於密碼需完整輸入後執行按鈕控項,才知正確與否。因此常將判斷密碼正確與否的程式,寫在按鈕控制項的Click事件內,而不使用TextChanged事件。 • 由於密碼正確後才能輸入半徑,所以表單載入時在Form1_Load事件處理程序中,先將輸入半徑的文字方塊控制項的ReadOnly屬性設為True,待Click事件中檢查密碼正確時,才能將ReadOnly屬性設為False,以允許輸入半徑。 • 本例要求輸入半徑時,馬上顯示圓面積。故需將計算圓面積的程式碼寫在TextChanged事件處理程序中。

  16. 【實作】 Step1 建立表單 專案名稱命名為『circle』。 在表單內建立下圖所示之控制項: Step2 請按照上圖來設定各物件的屬性。 Label 1 btnCheck Label 3 Label 2 lblArea

  17. Step3 撰寫程式碼 ‘FileName : circle.sln 01 Private Sub Form1_Load(ByVal sender …..) Handles MyBase.Load 02 lblArea.Text = "" ‘ 表單載入時設定各控制項初值 03 txtPassword.MaxLength = 3 ‘ 輸入密碼最多3個字元 04 txtPassword.PasswordChar = "? " ‘ 輸入密碼時以?替代 05 txtPassword.TabIndex = 0 ‘ 設定txtPassword為第一個作用事件 06 txtR.ReadOnly = True ‘ 設定txtR無法輸入 07 End Sub 08 ' --------------------------------------------------------------------------------------------- 09 Private Sub btnCheck_Click(ByVal …..) Handles btnCheck.Click 10 If txtPassword.Text = "abc" Then‘ 選擇結構,輸入密碼字元為abc時 11 txtR.ReadOnly = False ‘ 更改txtR設定,允許輸入半徑值 12 txtR.Focus() ‘ 將駐停焦點移到txtR 13 End If 14 End Sub 15 ' -------------------------------------------------------------------------------------------- 16 Private Sub txtR_TextChanged(ByVal …..) Handles txtR.TextChanged 17 lblArea.Text = 3.14 * Val(txtR.Text) ^ 2 ‘ 計算圓面積 18 End Sub

  18. 4-2 格式化輸出 在文字方塊、標籤、表單、圖片方塊或印表機物件上,可以利用函式來顯示格式化的資料。 一、Space函式 Space函式可以在目前游標處插入指定數目的空白字串,在程式中可利用該函式調整文字位置使其上下對齊。語法如下: 【例】在TextBox1文字方塊控制項上面顯示品名(iPhone)和單價,品名和單價之間加上兩個空白字元。 TextBox1.Text = "iPhone:" & Space(2) & "9000元"

  19. 二、vbNewLine、vbCrLf、vbTab常數 • Chr函式可將數值轉成對應的ASCII 碼字元。如Chr(65)的值為 "A"。 • Chr(9)字元就相當於鍵盤的 鍵,其後文字跳到下一個定位點位置。系統定義vbTab常數來代表。 • 定位點和定位點間可容納8個字元,如果字串長度超過就會多佔一個定位點。 • 文字如要換行要用Chr(13) + Chr(10) 兩個字元組成換行符號。

  20. 系統定義vbNewLine和vbCrLf常數來表示Chr(13) + Chr(10)換行符號。 • 【例】TextBox1.Text = " === 單價表 === " & vbCrLf & " iPhone4 " & vbTab & " 9000元"會顯示成:(  代表空白字元) === 單價表 === iPhone49000元

  21. 三、Format函式 Format函式可將輸出資料以指定格式輸出,使得輸出資料能對齊以方便閱讀。  運算式可為數值或字串運算式。  fmt參數若省略時,會將數值轉換成字串, 並將正數前的空白去除。

  22. 數字的預設格式如下表:

  23. 常用Format函式的數字自訂格式如下表:

  24. 常用Format 函式的時間格式: • Now() 函式用來取得系統目前的日期與時間。 • 顯示結果會因「控制台」中「地區及語言」格式設定不同而不同。 • 本書採的日期及時間的格式如下:(以2010年3月21日上年9點20分48秒為例) • 簡短日期 → 2010/03/21 完整日期 → 2010年3月21日 簡短時間 → 上午09:20 完整時間 → 上午:09:20:48

  25. 常用Format函式的日期與時間自訂格式字元如下表:常用Format函式的日期與時間自訂格式字元如下表:

  26. 【例】設日期為#3/17/2010 5:21:50 PM#,然後使用各種Format函式格式,來觀察執行結果。 Dim day As Date = #3/17/2010 5:21:50 PM# txtShow.Text = Format(day, "h:m:s") 值為"5:21:50" txtShow.Text = Format(day, "hh:mm:ss tt")值為"05:21:50 下午" txtShow.Text = Format(day, "HH:mm:ss")值為"17:21:50" txtShow.Text = Format(day, "yyyy MMM d,dddd") 值為"2010 三月17,星期三" txtShow.Text = Format(day, "MM/d/yy")值為"03/17/10" txtShow.Text = Format(day, "yy-MMMM-d")值為"10-三月-17" txtShow.Text = Format(day, "M/d/yyyy HH:mm")值為"3/17/2010 17:21"

  27. 【問題分析】 1.使用Format函式和vbTab常數做文字資料定位。 2.因為TextBox控制項內容是多行顯示,所以Multiline屬 性值要設為True。 3.換行符號可以使用vbNewLine、vbCrLf常數,或 是Chr(13) +Chr(10)。 【上機】 Step1 建立表單 專案名稱命名為『member』。 在表單內建立下圖所示之控制項:

  28. 設定各物件的屬性:

  29. ' FileName : member.sln 01 Private Sub Form1_Load(ByVal …. ) Handles MyBase.Load 02 txtData.TabStop = False ‘ 使文字方塊的內容不被選取而成反白顯示 03 txtData.Text = Space(6) & "VB俱樂部會員名冊" & Space(4) & Format(Now(), "M-d-yyyy h:m:s") & vbCrLf & vbCrLf 04 txtData.Text &= "姓名"& vbTab & "電話"& vbTab & vbTab & "生日"& vbTab & vbTab & "消費金額"& vbCrLf ‘電話長度超過8個字元 ‘ 所以使用兩個vbTab 05 txtData.Text &= "------" & vbTab & "------" & vbTab & vbTab & "------" & vbTab & vbTab & "------------" & vbCrLf 06 txtData.Text &= "楚留香" & vbTab & "(02)12345678" & vbTab & _ Format(#3/17/1982#, " d ") & vbTab & Format(78260.5, "$000000.0") & vbCrLf ‘ 使用Format函數來使數字的長度相同 07 txtData.Text &= "張無忌" & vbTab & "(02)87654321" & vbTab & _ Format(#11/6/1980#, "d") & vbTab & Format(129510, "$000000.0") 08 End Sub

  30. 4-3 InputBox函式 通常使用者希望輸入文字資料時,除須建立TextBox文字方塊控制項外,還要使用Label標籤控制項來提示訊息。 VB提供 InputBox函式會顯示輸入對話方塊,使用者只要在文字方塊內輸入資料,再按 <確定> 鈕,且所輸入資料會以字串型別放入指定的字串變數。語法:

  31. InputBox 函式的引數說明: 1. 字串變數 呼叫 InputBox 函式時會出現一個對話方塊,輸入 文字後按 <確定> 鈕,文字會傳給等號左邊的字串 變數。 按 <取消> 鈕,傳回值是空字串("")。 2. 提示訊息引數 用來提醒使用者輸入資料的內容或格式,本引數不 可省略。若沒有提示訊息必須 ""加入表示。

  32. 3. [ ] 引數 中括號內引數可省略,但引數間的逗號需保留。 4. 標題引數 為對話方塊標題文字,屬選擇性引數,如省略以專案 名稱當做標題文字。 5. 預設值引數 呼叫 InputBox 函式時,文字方塊中預設的文字資料。 6. Xpos,Ypos引數 設定對話方塊在螢幕的座標,單位為Pixel (像素)。 若省略此引數,對話方塊預設在螢幕中央偏上方1/3處。

  33. 【問題分析】 1.使用InputBox函式讓使用者輸入姓名。 2.InputBox函式執行時,會將使用者的資料存在字串變 數中,利用該變數顯示歡迎文字。 【上機】 Step1 建立表單 專案名稱命名為『welcome』。 在表單內建立下圖所示之控制項: 設定各物件屬性:

  34. ' FileName : welcome.sln 01 Private Sub Form1_Load(ByVal … ) Handles MyBase.Load 02 Dim user As String 03 user = InputBox("請輸入姓名: ", "姓名")‘ 讓使用者輸入資料 04 lblWelcome.Text = "歡迎" & user & "使用本軟體!" 05 End Sub

  35. 4-4 MsgBox 函式與 MsgBox 敘述 當操作程式時,程式常會出現錯誤或警告訊息的對話方塊,來提醒使用者注意。VB提供MsgBox函式與MsgBox敘述,不必在表單上建立控制項就能製作訊息方塊。 • MsgBox函式可指定一些按鈕供使用者選擇,再根據所選取的回覆按鈕,作為程式流程的依據。 • Msgbox敘述MsgBox敘述沒傳回值,無法判斷使用者按下哪個按鈕。

  36. 一、MsgBox函式的語法 • 二者用法一樣, 只是MsgBox 函式有傳回值而 MsgBox 敘述沒有。 • 當呼叫 MsgBox 函式時會出現指定的指令按鈕,使用者只要按下按鈕後,該鈕代碼會存入傳回值中。 • 函式格式:傳回值 = MsgBox(訊息[, [格式碼][, 標題]] ) • 敘述格式:MsgBox (訊息[, [格式碼][, 標題]])

  37. 二、MsgBox 函式的格式碼 雖然代碼是數值比較簡潔,但可讀性較低,所以建議使用列舉型別。 因0~5代碼屬於同一性質,所以不可以相互累加組合。

  38. 「警示圖示代碼」的相關內容如下表: 因16~64代碼屬於同一性質,所以不可以相互累加組合。如果除了回覆按鈕外還要有警告圖示時,則必須將兩個代碼相加來組合成格式碼。例如要顯示 、 兩按鈕又要有 圖示,其格式碼等於17,即1+16。 如前所言,除了使用代碼相加外,建議使用列舉型別以Or或 + 相加,以增加程式可讀性。

  39. 其他代碼如下表:

  40. MsgBox (訊息[, [格式碼][, 標題]]) [例] 產生左下圖訊息方塊,程式碼有兩種寫法: 1. MsgBox("是否結束程式? ", 4, "結束") 或 2. MsgBox("是否結束程式?", MsgBoxStyle.YesNo, "結束")

  41. MsgBox (訊息[, [格式碼][, 標題]]) 1. MsgBox("是否結束程式? ", 52, "結束") 或' 4 + 48=52 2. MsgBox("是否結束程式?", MsgBoxStyle.YesNo Or _ MsgBoxStyle.Exclamation, "結束") 或 3. MsgBox("是否結束程式?", MsgBoxStyle.YesNo + _ MsgBoxStyle.Exclamation, "結束")

  42. 三、MsgBox函式的傳回值 在訊息方塊中有幾個回覆按鈕,當按下其中一 個按鈕時,會傳回對應的值。可藉傳回值判斷 使用者按了哪種按鈕,來做為程式流程判斷。

  43. 【例】以訊息方塊詢問是否結束程式,若使用者按[是] 鈕就結束程式,程式碼有兩種寫法: 另一種寫法:

More Related