已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第十章鍵盤與鼠標事件過程,第一節(jié)KeyPress事件,第一節(jié)KeyPress事件,當壓下鍵盤上的某個鍵時,將發(fā)生KeyPress事件。,注意:當一個控件或窗體擁有輸入焦點時,該控件或窗體將接收從鍵盤上輸入的信息。,KeyPress事件中的參數IndexAsInteger只用于控件組;KeyAsciiAsInteger用于單個控件。,利用KeyPress事件可以對輸入的值進行限制。,用KeyPress可以捕捉擊鍵動作。,在默認情況下,控件的鍵盤事件優(yōu)先于窗體的鍵盤事件,因此在發(fā)生鍵盤事件時,總是先激活控件的鍵盤事件。,PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii57ThenBeepKeyAscii=0EndIfEndSub,PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThenPrintText1.TextEndIfKeyAscii=0避免輸入的字符在文本框中回顯EndSub,例10.1編寫口令程序。用文本框的PassWord屬性編寫過口令程序,下面的口令程序是用KeyPress事件編寫的。,第二節(jié)KeyDown和KeyUp事件,當按下鍵盤上的某個鍵時,將發(fā)生KeyDown事件;而當松開某個鍵時,將發(fā)生KeyUp事件。,KeyDown和KeyUp事件的參數有兩種形式,IndexAsInteger只用于控件組;KeyCodeAsInteger,ShiftAsInteger用于單個控件。,1.KeyCode,按鍵的實際的ASCII碼。該碼以“鍵”為準,而不是以“字符”為準。,說明:大小寫字母用同一個鍵,它們的KeyCode相同(使用大寫字母的ASCII碼),但大鍵盤上的數字鍵與數字鍵盤上相同的數字鍵的KeyCode是不一樣的。對于有上檔字符和下檔字符的鍵,其KeyCode為下檔字符的ASCII碼。,2.Shift,轉換鍵。它指的是3個轉換鍵的狀態(tài),包括Shift、Ctrl和Alt,這3個鍵分別以二進制方式表示,每個鍵用3位,即Shift鍵為001,Ctrl鍵為010,Alt鍵為100。,利用邏輯符And可以判斷是否按下了某個轉換鍵。3個符號常量:ConstShift=1ConstCtrl=2ConstAlt=4,如果ShiftAndShift0則按下了Shift鍵如果ShiftAndCtrl0則按下了Ctrl鍵如果ShiftAndAlt0則按下了Alt鍵,對于某個對象來說,當發(fā)生某個鍵盤事件時,只要通過傳送KeyCode和Shift參數調用鍵盤處理程序就可以了。,PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)ConstAlt=4ConstKey_F2=&H71ShiftDown%=(ShiftAndShift)0AltDown%=(ShiftAndAlt)0F2Down%=(KeyCode=Key_F2)IfAltDown%AndF2Down%ThenText1.Text=AAAAAAEndIfEndSub,例10.2編寫一個程序,當按下鍵盤上的某個鍵時,輸出該鍵的KeyCode碼。,例10.3編寫程序,演示KeyDown和KeyUp的功能。,例10.4編寫程序,當按下轉換鍵和功能鍵時,輸出相應的信息。,例10.5編寫程序,通過鍵盤移動滾動條上的滾動框,并顯示移動情況。,第三節(jié)鼠標事件,壓下鼠標鍵時,將觸發(fā)MouseDown事件;松開鼠標鍵時,將觸發(fā)MouseUp事件;移動鼠標光標時,將觸發(fā)MouseMove事件。,一、鼠標位置,格式:Sub對象_事件(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)EndSub,“對象”可以是窗體或控件,“事件”可以是MouseDown、MouseUp或MouseMove。鼠標位置由參數x、y確定。,二、鼠標鍵,鼠標鍵狀態(tài)由參數Button來設定,該參數是一個整數(16位),在設置鍵狀態(tài)時實際上只使用了低3位。當按下某個鍵時,相應的位被置1,否則為0。,說明:MouseDown、MouseUp事件,只能用鼠標的按鍵參數判斷是否按下或松開某一個鍵,不能檢查兩個鍵同時按下或松開。MouseMove事件可以通過Button參數判斷按下一個或同時按下兩個、三個鍵。在判斷是否按下多個鍵時,要注意避免二義性。為提高可讀性,可把3個鍵定義為符號常量。,例10.6用鼠標事件在窗體上畫圓。,例10.7編寫程序,在窗體上畫圓。要求:按著右鍵移動鼠標,則可畫圓;否則不能畫圓。,三、轉換參數(Shift),和參數Button一樣,轉換參數Shift也是一個整數值,并用其低3位表示Shift、Ctrl和Alt鍵的狀態(tài),其中最低位表示按下Shift鍵(001,十進制數1),右數第二位表示按下Ctrl鍵(010,十進制數2),第三位表示按下Alt鍵(100,十進制數4)。,注意:某鍵被按下使得一個二進制位被設置。當按下某個鍵時,相應的位被置1,否則為0。Shift參數反映了當按下指定的鼠標鍵時,鍵盤上轉換鍵(Shift、Ctrl和Alt)的當前狀態(tài)??梢园裇hift參數和Button參數結合起來進行測試。,例10.8Shift參數和Button參數測試程序。,例10.9在圖片框中畫一個箭頭,當在圖片框內移動鼠標時,箭頭會隨著鼠標光標的移動而改變方向。,第四節(jié)鼠標光標的形狀,一、MousePointer屬性,鼠標光標的形狀通過MousePointer屬性來設置。該屬性可以在屬性窗口中設置,也可以在程序代碼中設置。,MousePointer的屬性是一個整數,可以取015的值,當某個對象的MousePointer屬性被設置為某個值時,鼠標光標在該對象內就以相應的形狀顯示。,1.在程序代碼中設置MousePointer屬性,二、設置鼠標光標形狀,格式:對象.MousePointer=設置值,“對象”可以是復選框、組合框、命令按鈕、目錄列表框、驅動器列表框、文件列表框、窗體、框架、圖像、標簽、列表框、圖片框、滾動條、文本框、屏幕等。,“設置值”是015的一個值。,2.在屬性窗口中設置MousePointer屬性,單擊屬性窗口中的MousePointer屬性條,然后單擊設置框右端向下的箭頭,將下拉顯示MousePointer的15個屬性值。,例10.10編寫程序,顯示鼠標光標的形狀。,PrivateSubPicture1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Picture1.MousePointer=11EndSub,3.自定義鼠標光標,如果把MousePointer屬性設置為99,則可通過MouseIcon屬性定義自己的鼠標光標。,(1)如果在屬性窗口中定義,可首先選擇所需要的對象,再把MousePointer屬性設置為“99-Custom”,然后設置MouseIcon屬性,把一個圖標文件賦給該屬性(與設置Picture屬性的方法相同)。,(2)如果用程序代碼設置,則可先把MousePointer屬性設置為99,然后再用LoadPicture函數把一個圖標文件賦給MouseIcon屬性。,4.鼠標光標形狀的使用,在Windows中,鼠標光標的應用有一些約定俗成的規(guī)則。為了與Windows環(huán)境相適應,在應用程序中應遵守這些規(guī)則。,注:表示用戶當前可用的功能。表示程序狀態(tài)的用戶可視線索。當坐標(X、Y)值為0時,改變鼠標光標形狀。,第五節(jié)拖放,按下鼠標鍵,不要松開,然后移動鼠標,對象將隨鼠標的移動而在屏幕上拖動,松開鼠標鍵后,對象即被放下。,一、與拖放有關的屬性、事件和方法,1.屬性,(1)DragMode屬性:該屬性用來設置自動(1)或手動(0)拖放模式。(2)DragIcon屬性:在拖動一個控件時,這個控件變成一個圖標,等放下后再恢復成原來的控件。,2.事件,與拖放有關的事件是DragDrop和DragOver。把控件(圖標)拖到目標對象之后,如果松開鼠標鍵,則產生一個DragDrop事件。DragOver事件用于圖標的移動。當拖動對象越過一個控件時,產生DragOver事件。,3.方法,按下鼠標鍵,不要松開,然后移動鼠標,對象將隨鼠標的移動而在屏幕上拖動,松開鼠標鍵后,對象即被放下。,拖放有關的方法有Move和Drag。Drag方法的格式為:控件.Drag整數,注意:不管控件的DragMode屬性如何設置,都可以用Drag方法來人工地啟動或停止一個拖放過程?!罢麛怠钡娜≈禐?、1或2,其含義分別為取消拖放、允許拖放或結束拖放。,上述事件具有相同的參數:,X、Y坐標(不是屏幕的絕對坐標,而是相對控件的坐標),鼠標按鈕的狀態(tài)(左、中、右等),控制鍵的狀態(tài)(Shift、Ctrl、Alt),二、自動拖放,在程序代碼窗口中的“對象”框中選擇“Form”,在“過程”框中選擇DragDrop,編寫Form_DragDrop事件過程,將源對象移到鼠標光標(x,y)處。,1.步驟:,在窗體上畫一個控件,例如圖片框,并用DragIcon屬性裝入一個圖標文件。,在屬性窗口中找到DragMode屬性,將其值設置為“1-Automatic”。,例1:,2.實現的方法:,在設計階段,不要用Picture屬性裝入圖象,而是用DragIcon屬性裝入圖象,方法與Picture類似。,在執(zhí)行階段,通過程序代碼設置DragIcon屬性。,例10.11在窗體上建立兩個控件,拖拉其中一個控件,當把它放到第二個控件上時,該控件消失,單擊窗體后再度出現。,按照拖放要求,拖動過程中應把控件變成圖標,放下時再恢復為控件。,例2:,三、手動拖放,1.步驟:,在窗體上建立一個圖片框,裝入一個圖標(例如Phone02.ico)。,設置圖片框的DragIcon屬性。,PrivateSubForm_Load()Picture1.DragIcon=Picture1.PictureEndSub,用MouseDown事件過程打開拖拉開關。,PrivateSubPicture1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Picture1.Drag1EndSub,關閉拖拉開關,停止拖拉,并產生DragDrop事件。,編寫DragDrop事件過程。,PrivateSubPicture1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Picture1.Drag2EndSub,PrivateSubForm_DragDrop(SourceAsControl,XAsSingle,YAsSingle)Source.Move(X-Source.Width/2),(Y-Source.Height/2)EndSub,例10.12用手動拖放模擬文件操作:從文件夾中取出文件,放入文件柜中,在放入前,先打開文件柜的抽屜,放入后再關上。,壓下鼠標鍵事件過程,SubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)EndSub,松開鼠標鍵事件過程,SubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)EndSub,移動鼠標光標事件過程,SubForm_MouseMove(B
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度PVC管材智能化制造技術合作合同
- 二零二五年度智慧交通系統(tǒng)設計合同3篇
- 二零二五年度文化教育節(jié)目制作合作協(xié)議3篇
- 2025年度新型建筑材料供貨與施工監(jiān)理合同
- 二零二五年度辦公樓租賃合同租賃物租賃用途與使用規(guī)范
- 海南外國語職業(yè)學院《影視創(chuàng)作與剪輯》2023-2024學年第一學期期末試卷
- 二零二五年度智慧社區(qū)廣告安裝與智慧家居服務協(xié)議3篇
- 脫硫塔課程設計三視圖
- 瑜伽筋膜伸展課程設計
- 落葉漚肥課程設計思路
- 教育管理學課件-管理、教育管理和教育管理學之概述
- 真需求-打開商業(yè)世界的萬能鑰匙
- 2025五金配件購銷合同范本
- 2025年中儲糧儲運限公司公開招聘高頻重點提升(共500題)附帶答案詳解
- AS16571992固定平臺走道樓梯與梯子的設計施工與安裝
- 《鋰離子電池用二氟草酸硼酸鋰》
- 【MOOC】《形勢與政策》(北京科技大學)中國大學MOOC慕課答案
- 東方電影學習通超星期末考試答案章節(jié)答案2024年
- 安徽省安慶市迎江區(qū)2023-2024學年四年級上學期期末數學試卷
- 護理教學基本方法與技巧
- 名師工作室考核評價表.doc
評論
0/150
提交評論