• 沒有找到結果。

字串函數 鍵盤事件

N/A
N/A
Protected

Academic year: 2022

Share "字串函數 鍵盤事件"

Copied!
32
0
0

加載中.... (立即查看全文)

全文

(1)

Visual Basic 程式設計

字串函數 鍵盤事件

ActiveX控制項 – MaskEdBox元件

(2)

字串函數

字串變數: str = “Abc123”

„

轉為小寫字串:LCase(字串)

Š LCase(str)Γabc123”

„

轉為大寫字串:UCase(字串)

Š UCase(str)ΓABC123”

„

計算字串長度:Len(型別)

Š Len(str)=6

Dim A As Integer A=123

Print Len(A) 2

(3)

3

字串函數 (cont.)

子字串搜尋:

„

InStr([搜尋的位置],字串1,字串2[,比較法])

„

傳回字串2在字串1出現的位置

Š 找不到則傳回0

„

InStr(“abcdecd”,”cd”)Î3

„

InStr(4,“abcdecd”,”cd”)Î6

„

比較法:

Š vbBinaryCompareÎ分大小寫

Š vbTextCompareÎ不分大小寫

(4)

字串函數 (cont.)

„

使用比較法時,起始位置要輸入

„

InStr(1,“abcd”,“Cd”,vbBinaryCompare)Î0

„

InStr(1,“abcd”,“Cd”,vbTextCompare)Î3

擷取子字串:Mid(字串,起始位置[,長度])

„

Mid(“test test”,6)Δtest”

„

Mid(“test test”,6,3)Δtes”

(5)

5

字串函數 (cont.)

從左邊取子字串:Left(字串,長度)

„ Left(“test1 test2”,5)Γtest1”

從右邊取子字串:Right(字串,長度)

„ Right(“test1 test2”,5)Γtest2”

去除左右空白字元:Trim(字串)

„ Trim(“ test ”)Γtest”

去除左/右空白字元:LTrim(字串)/LTrim(字串)

„ LTrim(“ test ”)Γtest ”

„ RTrim(“ test ”)Γ test”

(6)

字串函數 (cont.)

字串切割:利用InputBox輸入姓名,並且使用

字串相關函數將姓與名切割開來,分別存到

firstname與lastname兩個變數中。

(7)

7

字串函數 (cont.)

Private Sub Form_Click()

Dim name, lastname, firstname As String Dim position As Integer

Do

name = InputBox(“請輸入姓名:姓,名”, "注意") name = Trim(name)

position = InStr(name, ",")

Loop Until (name <> "" And position <> 0) lastname = Left(name, position - 1)

firstname = Mid(name, position + 1) Print lastname + "先生,你好"

End Sub

(8)

Try it!

請撰寫一個程式,將電話號碼分成區碼 與號碼兩個部份。

„

例: (02)12345678

„

輸出:

Š 區碼:02

Š 號碼:12345678

(9)

Visual Basic 程式設計

字串函數 鍵盤事件

ActiveX控制項 – MaskEdBox元件

(10)

鍵盤與事件

Visual Basic提供了許多控制項介面來處理由鍵盤輸入 的資料,例如『文字方塊』控制項中的文字通常是由 鍵盤所輸入的資料。除此之外,某些特殊按鍵或組合 鍵是具有特殊意義的,為了要提供這種服務,Visual Basic提供了三個事件來處理鍵盤操作。

事件名稱 說明

物件_KeyPress

物件_KeyDown 物件_KeyUp

在特定物件上收到由鍵盤按鍵的字元。(僅 回應按鍵動作,無法判斷該按鍵是否仍被按 住或已放開)

在特定物件上偵測出有按鍵被按住。

在特定物件上偵測出被按住的鍵已放開。

(11)

11

鍵盤與事件 (cont.)

當使用者按下鍵盤後,將觸發KeyPress事件與KeyDown事件,放開 鍵盤時,則觸發KeyUp事件,

不是按下所有的按鈕都會觸發KeyPress事件,只有按下KeyAscii 碼的按鍵,才會觸發KeyPress事件。KeyAscii碼如下列所示:

合法的按鍵 傳入的KeyAscii碼值 任何可印出的鍵盤字元

【 Tab】鍵

【Crtl】+【A】鍵~【Crtl】+【Z】鍵

【Enter】鍵與【Ctrl】+【Enter】鍵 13【Enter】鍵與10

【Backspace】鍵與

【Ctrl】+【Backspace】鍵

8【Backspace】鍵(倒退 鍵)與127

字元的ASCII碼 9

1~26

(12)

鍵盤與事件- KeyPress事件

KeyPress事件語法如下:

z 語法說明】:

¾ KeyAscii:傳入代表被按鍵盤的ASCII碼(參閱附錄)。

¾ 若在事件程序中更改KeyAscii參數內容,則顯示的字元將跟著被更改。

¾ 若將KeyAscii設為0,則會清除剛才輸入的字元。

Private Sub物件_KeyPress(KeyAscii As Integer)   ……….

End Sub

(13)

13

鍵盤與事件- KeyPress事件 (cont.)

„ 【Try it!】:設計三種自動校正與禁止輸入的文字方塊,如下規 定。

¾ 第一個文字方塊只允許輸入數字與小數點,輸入其他字元則清除掉所輸入的 字元。

¾ 第二個文字方塊內,會將小寫字母改成大寫字母,其它字元維持不變。

¾ 第三個文字方塊內,會將大寫字母改成小寫字母,其它字元維持不變。

(14)

鍵盤與事件-

KeyDown事件與KeyUp事件

KeyDown與KeyUp事件的觸發時機與動作:

„ KeyDown動作:按下鍵盤按鍵不放時,會觸發KeyDown事件。

„ KeyUp動作:放開已按下的按鍵時,會觸發KeyUp事件(恰 與KeyDown動作相反)。

„ 可以配合KeyPress事件來檢查按下的是哪一個按鍵。

KeyDown、KeyUp、KeyPress事件提供的功能有些不同:

„ 若輸入一個字元,則事件發生順序為KeyDown事件、KeyPress事件、

KeyUp事件。

„ KeyPress事件可以取得按下字元的ASCII碼,但無法得知鍵盤是否持 續被按著,或者是一按下就被放開。

„ KeyUp和KeyDown事件程序可以處理KeyPress事件無法處理的按鍵,

例如:功能鍵、編輯鍵與組合鍵。

(15)

15

鍵盤與事件-

KeyDown事件與KeyUp事件 (cont.)

下列狀況無法觸發KeyDown、KeyUp、KeyPress事件:

„ 當表單出現指令按鈕,並且預設屬性為True時,按下【Enter】

鍵,只會觸發指令按鈕的事件,對於其它控制項則沒有作用。

„ 當表單出現的指令按鈕的取消屬性為True時,按【Esc】鍵只 會觸發指令按鈕的事件,對於其它控制項則沒有作用。

„ 按【Tab】鍵沒有作用 KeyDown與KeyUp事件語法

Private Sub物件_KeyDown(KeyCode As Integer , Shift As Integer)

………

End Sub

Private Sub物件_KeyUp(KeyCode As Integer , Shift As Integer)

………

End Sub

(16)

鍵盤與事件-

KeyDown事件與KeyUp事件 (cont.)

語法說明】:

„ 參數KeyCode:KeyCode是鍵盤掃描碼(非ASCII碼)。鍵盤掃描碼如下:

按鍵 掃瞄碼 A~Z

0~9

65~90 48~57

功能鍵 掃瞄碼

【F1】~【F12】1 0~9

12~123 48~57 7

Home

8

9 PgUp 4

← 5

1 2

3 6

36 38 33 37 12

35 40 34 39 對應掃描碼

(17)

17

鍵盤與事件-

KeyDown事件與KeyUp事件 (cont.)

參數Shift:將傳入【Shift】、【Crtl】、【Alt】等3鍵被按下的情形。

如下表:

Shift值 3鍵被按下的形況 0

1

2 僅【Ctrl】鍵被按下

3 【Shift】與【Ctrl】鍵同時被按下 4 僅【Alt】鍵被按下

5 【Shift】與【Alt】鍵同時被按下 6 【Ctrl】與【Alt】鍵同時被按下

7 【Shift】、【Ctrl】、【Alt】3鍵同時被按下 此3鍵都沒被按下

僅【Shift】鍵被按下

(18)

鍵盤與事件-

KeyDown事件與KeyUp事件 (cont.)

【Try it!】:設計一個同時按下【Ctrl】+【Shift】+【方向】鍵 不放可移動圖片的程式,當放開鍵盤時,則會將圖片歸位。

„ 使用物件的.top與.left控制物件的位置。

(19)

Visual Basic 程式設計

字串函數 鍵盤事件

ActiveX控制項 – MaskEdBox元件

(20)

ActiveX控制項

ActiveX在廣義上是指微軟公司的整個 COM架構,但是現在通常用來稱呼基於 標準COM介面來實作物件連結與嵌入的 ActiveX控制項。

在VB 6.0中,基本控制項為預設會出現,

而ActiveX控制項則要手動增加。

(21)

21

按下右鍵

選擇Components

新增了Masked Edit

(22)

MaskEdit 遮罩文字方塊

由於TextBox文字方塊無法對輸入的資料做篩 選,所以VB 6.0的ActiveX附加元件-MaskEdit,

透過Mask屬性的設定,就可按照遮罩篩選樣式

防止使用者輸入不合法的字元,而不需編寫任

何程式碼就可以完成檢查的工作。因此若要限

制使用者輸入特定樣式的字元,或指定輸入字

元的個數時,可以使用MaskEdBox遮罩文字方

塊控制項來取代TextBox。

(23)

23

MaskEdit 遮罩文字方塊 (cont.)

常用屬性

屬性

Mask 輸入格式設定

Text 輸入的文字

PromptChar 提示提示字元

Text1

MaskEdBox1

Command1

(24)

MaskEdit 遮罩文字方塊 (cont.)

Private Sub Command1_Click() If (Text1.Text = "") Then

Text1.Text = MaskEdBox1.Text Else

Text1.Text = Text1.Text + vbNewLine +_

        MaskEdBox1.Text End If

End Sub

Mask

[##]######

(25)

25

MaskEdit 遮罩文字方塊 (cont.)

格式設定字元

必要輸入即輸入時不能輸入空格;而選擇輸入則可省 略,在省略式,其Text屬性中呈現為空格。

# 數字 必要輸入 > 轉大寫

數字 轉小寫

字母 字元

字元

選擇輸入

9 選擇輸入 < 選擇輸入

A 必要輸入 ? 必要輸入

a 選擇輸入

(26)

MaskEdit 遮罩文字方塊 (cont.)

Mask相關範例說明 

„ (##)#######9

Š 適用電話號碼。區碼+號碼,一般為8碼,部份地區僅7碼。

„ >AA-####

Š 適用汽車號碼。前兩碼為大寫字母,後四碼為數字,中間 用“-”連結。

„ ####/#9/#9

Š 適用日期。如:1987/3/17

„ >?#########

Š 適用身份證字號。第一碼為大寫的英文字母,後九碼為數 字。

(27)

27

MaskEdit 遮罩文字方塊 (cont.)

撰寫一個只能輸入新台幣格式的表單程 式。

„

在Mask屬性裡輸入“新臺幣 &&千&&百&&拾

&&億&&千&&百&&拾&&萬&&千&&百&&拾

&&圓 整”

„

“#”與“&”有何不同?

Š “#”是指定MaskEditBox只能輸入 0~9,而“&”能 輸入任何的可列印字元,因中文佔雙位元組,故 指定兩個“&”。

(28)

MaskEdit 遮罩文字方塊 (cont.)

讓使用者不論輸入數字0~9或是一~九都

顯示壹~玖。

(29)

29

MaskEdit 遮罩文字方塊 (cont.)

Private Sub MaskEdBox1_KeyPress(KeyAscii As Integer) Select Case Chr(KeyAscii)

Case "0", "零", " "

KeyAscii = Asc("零")

Case "9", "玖"

KeyAscii = Asc("玖") Case Else

KeyAscii = 0 End Select

End Sub

請填入相對應的程式碼

(30)

作業 – 身份證驗證

請撰寫一個表單程式,以MaskEdBox讓使用者輸入身 份證字號,並且驗證是否正確。

„ 第一碼英文字代表該組號碼配賦時所屬的縣市﹝非出生地﹞,

„ 第二碼數字1為男生2為女生,

„ 第3碼至第10碼為任意一串數字,

„ 但含英文字之全部號碼可用公式加以核算該組號碼是否正確,

Š 例如R123456783,R=25,

Š 檢查公式是:

2+5*9+1*8+2*7+3*6+4*5+5*4+6*3+7*2+8*1=167,

Š 其167再除以10求餘數結果。

Š 其餘數結果的個位數為7以10減去得3(檢查碼)。

Š 其餘數結果的個位數為0時,則得0(檢查碼)。

(31)

31

英文字母對應數字

英文字母 A B C D E F G H I J K L M 對應數字 10 11 12 13 14 15 16 17 34 18 19 20 21 英文字母 N O P Q R S T U V W X Y Z 對應數字 22 35 23 24 25 26 27 28 29 30 41 42 33

(32)

作業 – 身份證驗證 (cont.)

執行畫面:

參考文獻

相關文件

… 按下確定即可產生 DataSet (資料集),再利用 DataAdapter 中 Fill 方法即可將所設定的查詢內 容填入 DataSet 當中..

z按下確定即可產生 DataSet (資料集),再 利用 DataAdapter 中 Fill 方法即可將所設 定的查詢內容填入 DataSet 當中.. DataGrid

 可利用 HTML 控制項 中的 Table 控制項進 行排版動作.  (最好將 Table

Private Sub Dir1_change() File1.Path = Dir1.Path updatePath.

• 本章動畫的主角是各個英文字母文字物件,由 於 Flash 提供了文字物件打散 (Break Apart) 及分散至圖層 (Distribute to Layer)

 透過一系列 一系列 一系列 一系列的圖畫 圖畫 圖畫 圖畫與少許相關文字 相關文字 相關文字 相關文字或者完全沒有 文字的結合,來傳遞資訊 傳遞資訊 傳遞資訊或說故事 傳遞資訊

• S4- 閱讀時眼睛看著文 字,細聲讀出來。學生 對文字的排列及一字一 音有鞏固的認識,能以 手指指著文字閱讀。識 字量一般,能認讀關鍵 詞語而大致理文字意思。.

Chi-Tsang’s abundant interpretation writings involved with most of the important sutras at that time, implying that behind the writings Chi-Tsang possessed his