第四章
This presentation is the property of its rightful owner.
Sponsored Links
1 / 53

第四章 輸入介面設計 PowerPoint PPT Presentation


  • 99 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

第四章 輸入介面設計

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


6976483

第四章 輸入介面設計

本章投影片僅供本書上課教師使用,非經同意請勿拷貝或轉載


4 1 textbox

4-1 TextBox文字方塊

第三章介紹表單上輸出訊息的常用控制項,本章將介紹

TextBox文字方塊工具與輸出入對話方塊的函式與敘述。

  • 一、TextBox控制項常用的屬性


6976483

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


6976483

二、字串與數值的轉換函式

  • 文字方塊 Text 屬性的資料是屬字串資料型別。

  • 欲將 Text 屬性中的資料取出作數值運算 加法時,VB將"+"號視為字串合併運算,

    發生錯誤。 減法、乘法、除法,取出的 Text 屬性值會

    自動轉成數值,不發生錯誤。

  • 建議 Text 屬性的資料做四則運算 先做字串轉數值後再做運算,以免發生錯誤。

  • VB 提供 Val() 函式將字串轉成數值。語法:

    Val(str)

  • 若 Text 屬性值的資料含有數字和文字 Val() 函式 只將前面是數字部份轉換成數值


6976483

【例】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


6976483

【例】若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


Textbox

三、TextBox 控制項常用的方法

  • 表單和控制項除具有屬性外還有能執行的一些特定功能,稱為「方法」。

  • 方法只能在程式執行階段才能呼叫使用。

  • TextBox 控制項提供常用方法:

    1. Clear()方法

    將文字方塊的顯示內容清成空白。如將 TextBox1 文字方塊內顯示的文字清除寫法:

    TextBox1.Clear( )

    TextBox1.Text = ""


2 focus

2. Focus()方法

  • 設定控制項為駐停焦點,也就是成為作用物件。

  • 如將TextBox1文字方塊設為目前駐停焦點,寫法: TextBox1.Focus()

  • 一個控制項擁有TabIndex、TabStop屬性,就可設為駐停焦點。

  • 在程式中透過Focus()方法來指定某一控制項,成為表單目前的駐停焦點。

  • 在程式執行間,不須使用者按 鍵,可直接指定某控制項成為作用物件。


6976483

  • 表單中若有多個控制項第一個建立的控制項TabIndex屬性值為0(成為第一個作用物件);第二個為1,依此類推。

  • 使用者按 鍵時,依TabIndex屬性值由小到大依序切換作用物件。

  • 被指定駐停焦點控制項的Visible與Enabled屬性值皆設為「True」,此方法才有效。


6976483

【問題分析】

  • 為使TextBox美金控制項程式開始就取得焦點,應該第一個建立該控制項(將其建立TabIndex屬性值設為0),使其成為第一個停駐焦點。

  • 可在程式執行階段用Focus()方法,將駐停焦點移到TextBox美金控制項。

  • 使用Val()函式可以將字串資料轉成數值,以便作匯率換算。

  • 使用Clear()方法,可將TextBox控制項內容清成空白。


6976483

【實作】

Step1 建立表單

專案名稱命名為『us2nt』。

在表單內建立下圖所示之控制項:

Step2 請按照上圖來設定各物件的屬性。

Label 1

Label 2

Label 3


6976483

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 ' ----------------------------------------------------------------------------------


6976483

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


Textbox textchanged

四、TextBox 控制項的 TextChanged事件

  • 是TextBox控制項的預設事件。

  • 程式執行階段,當文字方塊的 Text 屬性內的資料有異動時,馬上觸動該文字方塊的TextChanged事件。因此,可將和Text屬性值有關的程式碼寫在此事件處理程序中。

  • 若希望文字方塊有異動,表單上相關控制項的資料馬上跟著文字方塊的內容異動 可免去按鈕 (如確定鈕…)才知道結果。


6976483

【問題分析】

  • 設定文字方塊控制項的PasswordChar屬性值以防止密碼輸入時被看到。由於密碼需完整輸入後執行按鈕控項,才知正確與否。因此常將判斷密碼正確與否的程式,寫在按鈕控制項的Click事件內,而不使用TextChanged事件。

  • 由於密碼正確後才能輸入半徑,所以表單載入時在Form1_Load事件處理程序中,先將輸入半徑的文字方塊控制項的ReadOnly屬性設為True,待Click事件中檢查密碼正確時,才能將ReadOnly屬性設為False,以允許輸入半徑。

  • 本例要求輸入半徑時,馬上顯示圓面積。故需將計算圓面積的程式碼寫在TextChanged事件處理程序中。


6976483

【實作】

Step1 建立表單

專案名稱命名為『circle』。

在表單內建立下圖所示之控制項:

Step2 請按照上圖來設定各物件的屬性。

Label 1

btnCheck

Label 3

Label 2

lblArea


6976483

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


6976483

4-2 格式化輸出

在文字方塊、標籤、表單、圖片方塊或印表機物件上,可以利用函式來顯示格式化的資料。

一、Space函式

Space函式可以在目前游標處插入指定數目的空白字串,在程式中可利用該函式調整文字位置使其上下對齊。語法如下:

【例】在TextBox1文字方塊控制項上面顯示品名(iPhone)和單價,品名和單價之間加上兩個空白字元。

TextBox1.Text = "iPhone:" & Space(2) & "9000元"


Vbnewline vbcrlf vbtab

二、vbNewLine、vbCrLf、vbTab常數

  • Chr函式可將數值轉成對應的ASCII 碼字元。如Chr(65)的值為 "A"。

  • Chr(9)字元就相當於鍵盤的 鍵,其後文字跳到下一個定位點位置。系統定義vbTab常數來代表。

  • 定位點和定位點間可容納8個字元,如果字串長度超過就會多佔一個定位點。

  • 文字如要換行要用Chr(13) + Chr(10) 兩個字元組成換行符號。


6976483

  • 系統定義vbNewLine和vbCrLf常數來表示Chr(13) + Chr(10)換行符號。

  • 【例】TextBox1.Text = " === 單價表 === " & vbCrLf & " iPhone4 " & vbTab & " 9000元"會顯示成:(  代表空白字元)

    === 單價表 ===

    iPhone49000元


6976483

三、Format函式

Format函式可將輸出資料以指定格式輸出,使得輸出資料能對齊以方便閱讀。

 運算式可為數值或字串運算式。

 fmt參數若省略時,會將數值轉換成字串, 並將正數前的空白去除。


6976483

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


6976483

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


Format

常用Format 函式的時間格式:

  • Now() 函式用來取得系統目前的日期與時間。

  • 顯示結果會因「控制台」中「地區及語言」格式設定不同而不同。

  • 本書採的日期及時間的格式如下:(以2010年3月21日上年9點20分48秒為例)

  • 簡短日期 → 2010/03/21 完整日期 → 2010年3月21日 簡短時間 → 上午09:20 完整時間 → 上午:09:20:48


6976483

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


6976483

【例】設日期為#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"


6976483

【問題分析】

1.使用Format函式和vbTab常數做文字資料定位。

2.因為TextBox控制項內容是多行顯示,所以Multiline屬

性值要設為True。

3.換行符號可以使用vbNewLine、vbCrLf常數,或

是Chr(13) +Chr(10)。

【上機】

Step1 建立表單

專案名稱命名為『member』。

在表單內建立下圖所示之控制項:


6976483

設定各物件的屬性:


6976483

' 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


4 3 inputbox

4-3 InputBox函式

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


6976483

InputBox 函式的引數說明:

1. 字串變數 呼叫 InputBox 函式時會出現一個對話方塊,輸入

文字後按 <確定> 鈕,文字會傳給等號左邊的字串

變數。 按 <取消> 鈕,傳回值是空字串("")。

2. 提示訊息引數 用來提醒使用者輸入資料的內容或格式,本引數不

可省略。若沒有提示訊息必須 ""加入表示。


6976483

3. [ ] 引數 中括號內引數可省略,但引數間的逗號需保留。

4. 標題引數 為對話方塊標題文字,屬選擇性引數,如省略以專案

名稱當做標題文字。

5. 預設值引數 呼叫 InputBox 函式時,文字方塊中預設的文字資料。

6. Xpos,Ypos引數 設定對話方塊在螢幕的座標,單位為Pixel (像素)。 若省略此引數,對話方塊預設在螢幕中央偏上方1/3處。


6976483

【問題分析】

1.使用InputBox函式讓使用者輸入姓名。

2.InputBox函式執行時,會將使用者的資料存在字串變

數中,利用該變數顯示歡迎文字。

【上機】

Step1 建立表單

專案名稱命名為『welcome』。

在表單內建立下圖所示之控制項:

設定各物件屬性:


6976483

' 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


4 4 msgbox msgbox

4-4 MsgBox 函式與 MsgBox 敘述

當操作程式時,程式常會出現錯誤或警告訊息的對話方塊,來提醒使用者注意。VB提供MsgBox函式與MsgBox敘述,不必在表單上建立控制項就能製作訊息方塊。

  • MsgBox函式可指定一些按鈕供使用者選擇,再根據所選取的回覆按鈕,作為程式流程的依據。

  • Msgbox敘述MsgBox敘述沒傳回值,無法判斷使用者按下哪個按鈕。


Msgbox

一、MsgBox函式的語法

  • 二者用法一樣, 只是MsgBox 函式有傳回值而 MsgBox 敘述沒有。

  • 當呼叫 MsgBox 函式時會出現指定的指令按鈕,使用者只要按下按鈕後,該鈕代碼會存入傳回值中。

  • 函式格式:傳回值 = MsgBox(訊息[, [格式碼][, 標題]] )

  • 敘述格式:MsgBox (訊息[, [格式碼][, 標題]])


6976483

二、MsgBox 函式的格式碼

雖然代碼是數值比較簡潔,但可讀性較低,所以建議使用列舉型別。

因0~5代碼屬於同一性質,所以不可以相互累加組合。


6976483

「警示圖示代碼」的相關內容如下表:

因16~64代碼屬於同一性質,所以不可以相互累加組合。如果除了回覆按鈕外還要有警告圖示時,則必須將兩個代碼相加來組合成格式碼。例如要顯示 、 兩按鈕又要有 圖示,其格式碼等於17,即1+16。

如前所言,除了使用代碼相加外,建議使用列舉型別以Or或 + 相加,以增加程式可讀性。


6976483

其他代碼如下表:


6976483

MsgBox (訊息[, [格式碼][, 標題]])

[例] 產生左下圖訊息方塊,程式碼有兩種寫法:

1. MsgBox("是否結束程式? ", 4, "結束") 或

2. MsgBox("是否結束程式?", MsgBoxStyle.YesNo, "結束")


6976483

MsgBox (訊息[, [格式碼][, 標題]])

1. MsgBox("是否結束程式? ", 52, "結束") 或' 4 + 48=52

2. MsgBox("是否結束程式?", MsgBoxStyle.YesNo Or _

MsgBoxStyle.Exclamation, "結束") 或

3. MsgBox("是否結束程式?", MsgBoxStyle.YesNo + _

MsgBoxStyle.Exclamation, "結束")


6976483

三、MsgBox函式的傳回值

在訊息方塊中有幾個回覆按鈕,當按下其中一

個按鈕時,會傳回對應的值。可藉傳回值判斷

使用者按了哪種按鈕,來做為程式流程判斷。


6976483

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

另一種寫法:


6976483

【問題分析】

1. 使用InputBox函式詢問密碼。

2. 密碼錯誤時,用MsgBox敘述顯示錯誤訊息。

3. 華式溫度 = 9/5 x攝氏溫度+32。

【上機】

1. 專案名稱命名為『password』。

2. 在表單內,建立如下圖所示之控制項:

Label 1

Label 2


6976483

' FileName : password.sln

01 Private Sub Form1_Load(ByVal ….) Handles MyBase.Load

02 lblF.Text = ""

03 Dim password As String

04 password = InputBox("請輸入密碼:", "密碼") ‘函式詢問密碼

05 If password <> "123" Then

06 MsgBox("密碼錯誤!程式將結束!! ", MsgBoxStyle.OkOnly_ Or MsgBoxStyle.Exclamation, "錯誤") ‘ 5~8行: 使用選擇結構

07 End ‘ 判定如密碼不符則結束程式

08 End If

09 End Sub

10 ' -------------------------------------------------------------------------------

11 Private Sub txtC_TextChanged(ByVal ….) Handles txtC.TextChanged

12 Dim c As Single‘ 11~17行: 達到立即互動效果

13 Dim f As Single

14 c = Val(txtC.Text)

15 f = c * 9 / 5 + 32

16 lblF.Text = Format(f, “###.00”) ‘ 設定顯示到小數第2位

17 End Sub


  • Login