360 likes | 543 Views
VB6 常用事件. 鍵盤事件. 鍵盤介紹 主要資訊輸入的來源 鍵盤排列方式的由來 標準的打字機鍵盤(稱為 QWERTY ,係因上排的字母順序得名)的字鍵配置,相信您也發現了它的設計並不理想,一些常用的文字(英文字母)分派給最弱且最慢的手指,常見的文字組合又交由同一隻手在執行,在在減緩了打字員的敲鍵率。 為何設計者要設計這麼笨的鍵盤呢?其實他一點也不笨,因為, QWERTY 鍵盤的設計事實上就是要減緩打字員的速度,當時機械式的打字機其機構運作的速度跟不上人們的敲字速度,常會發生卡鍵的問題, QWERTY 鍵盤減慢了打字的速度,也因此降低了卡鍵的頻率。. 鍵盤事件 ( 續 ).
E N D
鍵盤事件 • 鍵盤介紹 • 主要資訊輸入的來源 • 鍵盤排列方式的由來 • 標準的打字機鍵盤(稱為QWERTY,係因上排的字母順序得名)的字鍵配置,相信您也發現了它的設計並不理想,一些常用的文字(英文字母)分派給最弱且最慢的手指,常見的文字組合又交由同一隻手在執行,在在減緩了打字員的敲鍵率。 • 為何設計者要設計這麼笨的鍵盤呢?其實他一點也不笨,因為,QWERTY鍵盤的設計事實上就是要減緩打字員的速度,當時機械式的打字機其機構運作的速度跟不上人們的敲字速度,常會發生卡鍵的問題,QWERTY鍵盤減慢了打字的速度,也因此降低了卡鍵的頻率。
鍵盤事件(續) • VB常用的鍵盤事件(keyboard Events) • KeyPress • 在指定物件上收到由鍵盤按鍵的字元。僅能回應按鍵動作,無法判斷目前按鍵是否按住或放開 • KeyDown • 在指定物件上測到鍵盤有鍵被按住 • KeyUp • 在指定物件上測到鍵盤被按住的鍵已放開
鍵盤事件(續) • KeyPress • 當有按下鍵盤的動作產生時,就會觸發KeyPress 與 KeyDown 事件,放開鍵盤後處發 KeyUp 事件,但是,按下的鍵若是具有KeyAscii 碼的按鍵,KeyPress事件才會有效 • 合法的KeyAscii按鍵
鍵盤事件(續) • KeyDown、KeyUp • 可以使用 KeyDown 和 KeyUP 事件程序來處理 KeyPress 無法辨識的按鍵訊息,例如:功能鍵(F1 到 F12)、編輯鍵( INSERT、DELETE 或 BACKSPACE)、巡覽鍵,以及組合鍵等。與 KeyDown 和 KeyUp 事件不同的是,KeyPress 不顯示鍵盤的實際狀態,而只是傳遞一個字元。
鍵盤事件(續) • Change • 指示一個控制項的內容已經改變。此事件是如何及何時發生的,則隨控制項的不同而有所差異: • ComboBox - 改變控制項的文字方塊部分的文字。該事件僅在 Style 屬性設定為 0 (Dropdown Combo) 或 1 (Simple Combo) 以及當文字被改變,或者藉程式碼改變了 Text 屬性設定時才會發生。 • DirListBox - 改變所選擇的目錄。該事件發生在按兩下新目錄,或以程式碼改變 Path 屬性設定時。 • DriveListBox - 改變所選擇的磁碟機。該事件發生在選擇了新磁碟機,或以程式碼改變 Drive 屬性設定時。 • HScrollBar 和 VScrollBar (水平和垂直捲軸) - 移動捲軸的捲動方塊部份。該事件發生在捲動或以程式碼改變 Value 屬性設定時。 • Label - 改變 Label 的內容。該事件發生在 DDE 連結更新資料,或以程式碼改變 Caption 屬性設定時。 • PictureBox - 改變 PictureBox 的內容。該事件發生在 DDE 連結更新資料,或以程式碼改變 Picture屬性設定時。 • TextBox - 改變文字方塊的內容。該事件發生在 DDE 連結更新資料、使用者改變文字,或以程式碼改變 Text 屬性設定時。
牛刀小試(1) • 設計一程式,模擬電子看板,當按下‘a’鍵時,看板向左移動;按下‘d’鍵時,看板向右移動;按下‘s’鍵時,看板停止移動;按下‘q’鍵時結束程式執行
牛刀小試(1)---續 Label *2 Timer *1
牛刀小試(1)---續 • 屬性設定 • Label (Label1~2) • Caption • Label1:歡迎蒞臨空軍防警司令部 • Label2:‘a’ 左移 ‘d’ 右移 ‘s’ 停止 ‘q’ 結束 • Font • Label1:標楷體18號字加粗 • Label2:新細明體14號字 • ForeColor:Label1藍色 • Timer (Timer1) • Interval:0
A 65 a97 D 68 d 100 S 83 s 115 Q 81 q 113 牛刀小試(1)---續 當按下按鍵a或A時,令Label1的Tag 屬性為1,每0.1秒執行Timer1一次 當按下按鍵d或D時,令Label1的Tag 屬性為2,每0.1秒執行Timer1一次 當按下按鍵s或S時,令Timer1的 Interval屬性為0 當按下按鍵q或Q時,停止程式執行 假如Label1的Tag屬性為1時,Label1 向左移動30點(Twips) ,假如Label1 的Tag屬性為2時,Label1向右移動30 點(Twips) ,
牛刀小試(2) • 設計一程式,當按下方向鍵左鍵()時,人物圖形向左邊行進,當按下右鍵()時,人物圖形向右邊行進,當按下向下鍵()時,人物圖形向前方行進,按下向上鍵時()時,人物圖形向後方行進,當按下s鍵時,停止行進,當按下Esc鍵時,結束程式執行
牛刀小試(2)---續 PictureBox *1 Timer *1
牛刀小試(2)---續 • 屬性設定 • Form (Form1) • KeyPreview:True • BackColor:白色 • PictureBox (Picture1) • AutoSize:True • BackColor:白色 • BorderStyle:0-沒有框線 • Timer (Timer1) • Interval:250
牛刀小試(2)---續 實際我只畫了五張圖案 ,其餘的都是使用左右 反向的方法所建立的 • 準備圖案 stand.bmp front1.bmp front2.bmp back1.bmp back2.bmp left1.bmp left2.bmp right1.bmp right2.bmp
牛刀小試(2)---續 宣告兩個全域變數ttt(用以紀錄所按的方向鍵)與 g(用以進行圖片切換) 當按下左方向鍵(37)時,令ttt=1(代表按下左鍵) ,圖片從 Left1.bmp開始顯示,並啟動計時器Timer1 當按下上方向鍵(38)時,令ttt=2(代表按下上鍵) ,圖片從 back1.bmp開始顯示,並啟動計時器Timer1 當按下左方向鍵(39)時,令ttt=3(代表按下右鍵) ,圖片從 right1.bmp開始顯示,並啟動計時器Timer1 當按下左方向鍵(40)時,令ttt=4(代表按下下鍵) ,圖片從 front1.bmp開始顯示,並啟動計時器Timer1 當按下Esc(27)時結束程式執行,當按下s鍵(83)時,停止計 時器的作動,並令Picture1顯示stand.bmp 程式開始執行先令Picture1顯示stand.bmp的圖案
牛刀小試(2)---續 當ttt=1時(向左) ,圖案輪流顯示left1.bmp與left2.bmp,並令圖案向左移動50點(twips) ,當ttt=2時(向上) ,圖案輪流顯示back1.bmp 與back2.bmp,並令圖案向上移動50點(twips) ,當ttt=3時(向右) ,圖案輪流顯示right1.bmp與right2.bmp,並令圖案向右移動50點(twips) ,當ttt=4時(向下) ,圖案輪流顯示front1.bmp與front2.bmp,並令圖案向下移動50點(twips) g限定在1與 2之間切換
牛刀小試(3) • 設計一程式,模擬電動玩具中彈珠台的發球動作(按下向下箭號拉竿,放掉向下箭號,將球送出去)
牛刀小試(3)---續 Timer *1 Shape *2
牛刀小試(3)---續 • 屬性設定 • Form1: • ScaleMode:3-像素 • Shape (Shape1~2) • FillColor • Shape1:紅色 • Shape2:藍色 • FillStyle:0-實心 • Top • Shape1:264 • Shape2:216 • Timer (Timer1) • Enabled:False • Interval:10
牛刀小試(3)---續 當按下向下箭號時,Shape1與Shape2同時 向下移動,直到Shape1的Top屬性等於328 為止 當放開向下箭號時,Shape1與Shape2同時 回到原位,並啟動計時器Timer1 當Shape2未到達上邊界時,Shape2的Top屬性,每次減少2個像素(Pixels) ,直到Shape2的Top屬性小於等於1時,停止計時器Timer1的作動
駐點事件 • SetFocus • 將駐點移至指定的控制項或表單 • 駐點 • 在 Microsoft Windows 環境中,在同一時間只能有一個視窗、表單或控制項能有此功能。一個物件如具有駐點,通常會以反白標題或標題列來表示。使用者或應用程式皆可設定駐點。 • GotFocus • 當駐點(focus)移入物件或子控制項時,發生該事件 • LostFocus • 發生在物件失去駐點時,失去駐點可能由於使用者的動作,如定位到或按一下另一個物件,或者是在程式碼中使用 SetFocus 方法改變駐點
牛刀小試(4) • 設計一程式,用以計算學科成績,程式一執行時,控制權(駐點)交給第一科的文字盒,同時令文字盒顏色為黃色,每輸入一科按下Enter後,控制權交給下一個文字盒,前一個文字盒還原為白色,擁有控制權的文字盒顏色為黃色,直到全輸入完,按下計算後,顯示總分與平均,同時顯示及格或不及格的警語
牛刀小試(4)---續 Label *8 TextBox *7 CommandButton *3
牛刀小試(4)---續 • 屬性設定 • Label (Label1(0)~(6) 、Label2) • Caption • Label1(0)~(6):依圖中方式設定 • Label2:清空 • Font:新細明體16號字 • TextBox (Text1(0)~(4) 、Text2(0)~(1)) • Text:清空 • Font:新細明體16號字 • CommandButton (Command1~3) • Caption • Command1:計算 • Command2:重算 • Command3:離開 • Font:新細明體16號字
牛刀小試(4)---續 當按下離開鍵時,詢問是否離開 當文字盒掌握了控制權,則令文字 盒的背景色為黃色 當文字盒輸入內容並按下Enter鍵後 ,將控制權交付下一個文字盒 當文字盒釋放了控制權,則令文字 盒的背景色為黃白色
牛刀小試(4)---續 當按下計算鍵時,依序將Text1(0)~(4)的 值累計並指派給ssum變數 於Text2(0)顯示ssum值 於Text2(1)顯示ssum/5的值 假如平均(ssum/5)大於等於60則於Label2 顯示「表現不錯呦!!」否則顯示「你要加 油了!!」 當按下重算鍵時,依序將Text1(0)~(4)與 的Text2(0)~(1)的Text屬性、Label2的 Caption屬性值清空,並將控制權交給 Text1(0)
滑鼠事件 • Click • 此事件是發生在按下一個物件,並接著放開滑鼠鍵時。 • DblClick • 當在一個物件上快速連按兩次滑鼠左鍵時,該事件發生。 • MouseDown • 此事件是發生在按下一個物件時。 • MouseMove • 此事件是發生在滑移過一個物件時。 • MouseUp • 此事件是發生在放開滑鼠鍵時。
滑鼠事件(續) • DragDrop • 該事件發生在完成一個拖放動作 (就是將一個控制項拖曳到一個物件上,並釋放滑鼠鍵);或使用 Drag 方法,且其 action 參數設定為 2 (Drop)時。 • DragOver • 它發生在拖放動作進行時。可使用此事件對滑鼠指標在一個有效目標上的進入、離開或停留等進行監視。滑鼠指標的位置將決定接收此事件的目標物件。
牛刀小試(5) • 設計一程式,將螢幕分割成兩半,右邊顯示十個巧虎圖案,左邊隨機產生1~10之間的整數值,用滑鼠將右邊的圖案以滑鼠拖曳至左邊,當按下確定鍵後,若數量與數值相同時,顯示「好厲害」的警語,否則顯示「加油喔」
牛刀小試(5)---續 Lable *1 PictureBox *10 Line *1 CommandButton *3
牛刀小試(5)---續 • 屬性設定 • Form (Form1) • ScaleMode:3 – 像素 • StartUpPosition:2 – 螢幕中央 • PictureBox (Picture1(0)~(9)) • DragMode:1 – 自動 • AutoSize:True • CommandButton (Command1~3) • Caption:確定、重玩、離開 • Font:新細明體14號字 • Line
牛刀小試(5)---續 宣告公用變數ccc用以記錄搬移至左邊的個數 將移動的PictureBox定位於X,Y的位置(滑鼠所在位置, PictureBox的左上角定位點) ,假如PictureBox過了中線 且在左邊則ccc加1,Tag設為1,若又移回了右邊則ccc 減1,Tag設回0 設定ccc起始值為0,並令Picture1(0)~(9)載 入圖片stand.bmp,且令其Tag皆為0(皆在右 邊) ,以亂數取一介於1~10之間的整數值
牛刀小試(5)---續 當按下了確定鍵則比較ccc與電腦所產生的 亂數值(Label1的Caption) ,假如相同則顯 示「你好厲害喔」否則顯示「要再加油喔」 當按下了重玩鍵時,重新將所有Picture以亂數佈置於螢幕右側,並 令Tag值為0,ccc為0,重新以亂數 取介於1~10之間的整數值為題目 當按下了離開鍵則結束程式執行