




已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十章鍵盤與鼠標(biāo)事件過程,第一節(jié)KeyPress事件,第一節(jié)KeyPress事件,當(dāng)壓下鍵盤上的某個(gè)鍵時(shí),將發(fā)生KeyPress事件。,注意:當(dāng)一個(gè)控件或窗體擁有輸入焦點(diǎn)時(shí),該控件或窗體將接收從鍵盤上輸入的信息。,KeyPress事件中的參數(shù)IndexAsInteger只用于控件組;KeyAsciiAsInteger用于單個(gè)控件。,利用KeyPress事件可以對(duì)輸入的值進(jìn)行限制。,用KeyPress可以捕捉擊鍵動(dòng)作。,在默認(rèn)情況下,控件的鍵盤事件優(yōu)先于窗體的鍵盤事件,因此在發(fā)生鍵盤事件時(shí),總是先激活控件的鍵盤事件。,PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii57ThenBeepKeyAscii=0EndIfEndSub,PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThenPrintText1.TextEndIfKeyAscii=0避免輸入的字符在文本框中回顯EndSub,例10.1編寫口令程序。用文本框的PassWord屬性編寫過口令程序,下面的口令程序是用KeyPress事件編寫的。,第二節(jié)KeyDown和KeyUp事件,當(dāng)按下鍵盤上的某個(gè)鍵時(shí),將發(fā)生KeyDown事件;而當(dāng)松開某個(gè)鍵時(shí),將發(fā)生KeyUp事件。,KeyDown和KeyUp事件的參數(shù)有兩種形式,IndexAsInteger只用于控件組;KeyCodeAsInteger,ShiftAsInteger用于單個(gè)控件。,1.KeyCode,按鍵的實(shí)際的ASCII碼。該碼以“鍵”為準(zhǔn),而不是以“字符”為準(zhǔn)。,說明:大小寫字母用同一個(gè)鍵,它們的KeyCode相同(使用大寫字母的ASCII碼),但大鍵盤上的數(shù)字鍵與數(shù)字鍵盤上相同的數(shù)字鍵的KeyCode是不一樣的。對(duì)于有上檔字符和下檔字符的鍵,其KeyCode為下檔字符的ASCII碼。,2.Shift,轉(zhuǎn)換鍵。它指的是3個(gè)轉(zhuǎn)換鍵的狀態(tài),包括Shift、Ctrl和Alt,這3個(gè)鍵分別以二進(jìn)制方式表示,每個(gè)鍵用3位,即Shift鍵為001,Ctrl鍵為010,Alt鍵為100。,利用邏輯符And可以判斷是否按下了某個(gè)轉(zhuǎn)換鍵。3個(gè)符號(hào)常量:ConstShift=1ConstCtrl=2ConstAlt=4,如果ShiftAndShift0則按下了Shift鍵如果ShiftAndCtrl0則按下了Ctrl鍵如果ShiftAndAlt0則按下了Alt鍵,對(duì)于某個(gè)對(duì)象來說,當(dāng)發(fā)生某個(gè)鍵盤事件時(shí),只要通過傳送KeyCode和Shift參數(shù)調(diào)用鍵盤處理程序就可以了。,PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)ConstAlt=4ConstKey_F2=&H71ShiftDown%=(ShiftAndShift)0AltDown%=(ShiftAndAlt)0F2Down%=(KeyCode=Key_F2)IfAltDown%AndF2Down%ThenText1.Text=AAAAAAEndIfEndSub,例10.2編寫一個(gè)程序,當(dāng)按下鍵盤上的某個(gè)鍵時(shí),輸出該鍵的KeyCode碼。,例10.3編寫程序,演示KeyDown和KeyUp的功能。,例10.4編寫程序,當(dāng)按下轉(zhuǎn)換鍵和功能鍵時(shí),輸出相應(yīng)的信息。,例10.5編寫程序,通過鍵盤移動(dòng)滾動(dòng)條上的滾動(dòng)框,并顯示移動(dòng)情況。,第三節(jié)鼠標(biāo)事件,壓下鼠標(biāo)鍵時(shí),將觸發(fā)MouseDown事件;松開鼠標(biāo)鍵時(shí),將觸發(fā)MouseUp事件;移動(dòng)鼠標(biāo)光標(biāo)時(shí),將觸發(fā)MouseMove事件。,一、鼠標(biāo)位置,格式:Sub對(duì)象_事件(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)EndSub,“對(duì)象”可以是窗體或控件,“事件”可以是MouseDown、MouseUp或MouseMove。鼠標(biāo)位置由參數(shù)x、y確定。,二、鼠標(biāo)鍵,鼠標(biāo)鍵狀態(tài)由參數(shù)Button來設(shè)定,該參數(shù)是一個(gè)整數(shù)(16位),在設(shè)置鍵狀態(tài)時(shí)實(shí)際上只使用了低3位。當(dāng)按下某個(gè)鍵時(shí),相應(yīng)的位被置1,否則為0。,說明:MouseDown、MouseUp事件,只能用鼠標(biāo)的按鍵參數(shù)判斷是否按下或松開某一個(gè)鍵,不能檢查兩個(gè)鍵同時(shí)按下或松開。MouseMove事件可以通過Button參數(shù)判斷按下一個(gè)或同時(shí)按下兩個(gè)、三個(gè)鍵。在判斷是否按下多個(gè)鍵時(shí),要注意避免二義性。為提高可讀性,可把3個(gè)鍵定義為符號(hào)常量。,例10.6用鼠標(biāo)事件在窗體上畫圓。,例10.7編寫程序,在窗體上畫圓。要求:按著右鍵移動(dòng)鼠標(biāo),則可畫圓;否則不能畫圓。,三、轉(zhuǎn)換參數(shù)(Shift),和參數(shù)Button一樣,轉(zhuǎn)換參數(shù)Shift也是一個(gè)整數(shù)值,并用其低3位表示Shift、Ctrl和Alt鍵的狀態(tài),其中最低位表示按下Shift鍵(001,十進(jìn)制數(shù)1),右數(shù)第二位表示按下Ctrl鍵(010,十進(jìn)制數(shù)2),第三位表示按下Alt鍵(100,十進(jìn)制數(shù)4)。,注意:某鍵被按下使得一個(gè)二進(jìn)制位被設(shè)置。當(dāng)按下某個(gè)鍵時(shí),相應(yīng)的位被置1,否則為0。Shift參數(shù)反映了當(dāng)按下指定的鼠標(biāo)鍵時(shí),鍵盤上轉(zhuǎn)換鍵(Shift、Ctrl和Alt)的當(dāng)前狀態(tài)??梢园裇hift參數(shù)和Button參數(shù)結(jié)合起來進(jìn)行測(cè)試。,例10.8Shift參數(shù)和Button參數(shù)測(cè)試程序。,例10.9在圖片框中畫一個(gè)箭頭,當(dāng)在圖片框內(nèi)移動(dòng)鼠標(biāo)時(shí),箭頭會(huì)隨著鼠標(biāo)光標(biāo)的移動(dòng)而改變方向。,第四節(jié)鼠標(biāo)光標(biāo)的形狀,一、MousePointer屬性,鼠標(biāo)光標(biāo)的形狀通過MousePointer屬性來設(shè)置。該屬性可以在屬性窗口中設(shè)置,也可以在程序代碼中設(shè)置。,MousePointer的屬性是一個(gè)整數(shù),可以取015的值,當(dāng)某個(gè)對(duì)象的MousePointer屬性被設(shè)置為某個(gè)值時(shí),鼠標(biāo)光標(biāo)在該對(duì)象內(nèi)就以相應(yīng)的形狀顯示。,1.在程序代碼中設(shè)置MousePointer屬性,二、設(shè)置鼠標(biāo)光標(biāo)形狀,格式:對(duì)象.MousePointer=設(shè)置值,“對(duì)象”可以是復(fù)選框、組合框、命令按鈕、目錄列表框、驅(qū)動(dòng)器列表框、文件列表框、窗體、框架、圖像、標(biāo)簽、列表框、圖片框、滾動(dòng)條、文本框、屏幕等。,“設(shè)置值”是015的一個(gè)值。,2.在屬性窗口中設(shè)置MousePointer屬性,單擊屬性窗口中的MousePointer屬性條,然后單擊設(shè)置框右端向下的箭頭,將下拉顯示MousePointer的15個(gè)屬性值。,例10.10編寫程序,顯示鼠標(biāo)光標(biāo)的形狀。,PrivateSubPicture1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Picture1.MousePointer=11EndSub,3.自定義鼠標(biāo)光標(biāo),如果把MousePointer屬性設(shè)置為99,則可通過MouseIcon屬性定義自己的鼠標(biāo)光標(biāo)。,(1)如果在屬性窗口中定義,可首先選擇所需要的對(duì)象,再把MousePointer屬性設(shè)置為“99-Custom”,然后設(shè)置MouseIcon屬性,把一個(gè)圖標(biāo)文件賦給該屬性(與設(shè)置Picture屬性的方法相同)。,(2)如果用程序代碼設(shè)置,則可先把MousePointer屬性設(shè)置為99,然后再用LoadPicture函數(shù)把一個(gè)圖標(biāo)文件賦給MouseIcon屬性。,4.鼠標(biāo)光標(biāo)形狀的使用,在Windows中,鼠標(biāo)光標(biāo)的應(yīng)用有一些約定俗成的規(guī)則。為了與Windows環(huán)境相適應(yīng),在應(yīng)用程序中應(yīng)遵守這些規(guī)則。,注:表示用戶當(dāng)前可用的功能。表示程序狀態(tài)的用戶可視線索。當(dāng)坐標(biāo)(X、Y)值為0時(shí),改變鼠標(biāo)光標(biāo)形狀。,第五節(jié)拖放,按下鼠標(biāo)鍵,不要松開,然后移動(dòng)鼠標(biāo),對(duì)象將隨鼠標(biāo)的移動(dòng)而在屏幕上拖動(dòng),松開鼠標(biāo)鍵后,對(duì)象即被放下。,一、與拖放有關(guān)的屬性、事件和方法,1.屬性,(1)DragMode屬性:該屬性用來設(shè)置自動(dòng)(1)或手動(dòng)(0)拖放模式。(2)DragIcon屬性:在拖動(dòng)一個(gè)控件時(shí),這個(gè)控件變成一個(gè)圖標(biāo),等放下后再恢復(fù)成原來的控件。,2.事件,與拖放有關(guān)的事件是DragDrop和DragOver。把控件(圖標(biāo))拖到目標(biāo)對(duì)象之后,如果松開鼠標(biāo)鍵,則產(chǎn)生一個(gè)DragDrop事件。DragOver事件用于圖標(biāo)的移動(dòng)。當(dāng)拖動(dòng)對(duì)象越過一個(gè)控件時(shí),產(chǎn)生DragOver事件。,3.方法,按下鼠標(biāo)鍵,不要松開,然后移動(dòng)鼠標(biāo),對(duì)象將隨鼠標(biāo)的移動(dòng)而在屏幕上拖動(dòng),松開鼠標(biāo)鍵后,對(duì)象即被放下。,拖放有關(guān)的方法有Move和Drag。Drag方法的格式為:控件.Drag整數(shù),注意:不管控件的DragMode屬性如何設(shè)置,都可以用Drag方法來人工地啟動(dòng)或停止一個(gè)拖放過程。“整數(shù)”的取值為0、1或2,其含義分別為取消拖放、允許拖放或結(jié)束拖放。,上述事件具有相同的參數(shù):,X、Y坐標(biāo)(不是屏幕的絕對(duì)坐標(biāo),而是相對(duì)控件的坐標(biāo)),鼠標(biāo)按鈕的狀態(tài)(左、中、右等),控制鍵的狀態(tài)(Shift、Ctrl、Alt),二、自動(dòng)拖放,在程序代碼窗口中的“對(duì)象”框中選擇“Form”,在“過程”框中選擇DragDrop,編寫Form_DragDrop事件過程,將源對(duì)象移到鼠標(biāo)光標(biāo)(x,y)處。,1.步驟:,在窗體上畫一個(gè)控件,例如圖片框,并用DragIcon屬性裝入一個(gè)圖標(biāo)文件。,在屬性窗口中找到DragMode屬性,將其值設(shè)置為“1-Automatic”。,例1:,2.實(shí)現(xiàn)的方法:,在設(shè)計(jì)階段,不要用Picture屬性裝入圖象,而是用DragIcon屬性裝入圖象,方法與Picture類似。,在執(zhí)行階段,通過程序代碼設(shè)置DragIcon屬性。,例10.11在窗體上建立兩個(gè)控件,拖拉其中一個(gè)控件,當(dāng)把它放到第二個(gè)控件上時(shí),該控件消失,單擊窗體后再度出現(xiàn)。,按照拖放要求,拖動(dòng)過程中應(yīng)把控件變成圖標(biāo),放下時(shí)再恢復(fù)為控件。,例2:,三、手動(dòng)拖放,1.步驟:,在窗體上建立一個(gè)圖片框,裝入一個(gè)圖標(biāo)(例如Phone02.ico)。,設(shè)置圖片框的DragIcon屬性。,PrivateSubForm_Load()Picture1.DragIcon=Picture1.PictureEndSub,用MouseDown事件過程打開拖拉開關(guān)。,PrivateSubPicture1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Picture1.Drag1EndSub,關(guān)閉拖拉開關(guān),停止拖拉,并產(chǎn)生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用手動(dòng)拖放模擬文件操作:從文件夾中取出文件,放入文件柜中,在放入前,先打開文件柜的抽屜,放入后再關(guān)上。,壓下鼠標(biāo)鍵事件過程,SubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)EndSub,松開鼠標(biāo)鍵事件過程,SubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)EndSub,移動(dòng)鼠標(biāo)光標(biāo)事件過程,SubForm_MouseMove(B
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程合作加盟合同協(xié)議
- 訂單輔料采購合同協(xié)議
- 解除員工勞務(wù)合同協(xié)議
- 財(cái)會(huì)類合同協(xié)議
- 貼磚質(zhì)保協(xié)議書模板
- 2025年科學(xué)研究與開發(fā)考試試題及解析
- 2025年老年人健康管理知識(shí)考試試卷及答案
- 民宿攝影租賃合同協(xié)議
- 快餐店配送酒水合同協(xié)議
- 吳忠市合作協(xié)議書范本
- 2024-2025學(xué)年人教版PEP四年級(jí)英語下冊(cè)期末試卷(3)(含答案含聽力原文無音頻)
- 2025年鄉(xiāng)村醫(yī)生公共衛(wèi)生服務(wù)考試題庫:公共衛(wèi)生服務(wù)傳染病防控跨部門合作試題
- AI時(shí)代的智能領(lǐng)導(dǎo)力探討
- 2025廣州房屋租賃合同標(biāo)準(zhǔn)版
- 2025年上海房屋租賃合同模板
- 2024年西醫(yī)臨床模擬訓(xùn)練計(jì)劃試題及答案
- 初級(jí)會(huì)計(jì)師考試歷年真題試題及答案
- 2024年美容師考試要關(guān)注的法規(guī)與行業(yè)標(biāo)準(zhǔn)指導(dǎo)試題及答案
- 2024年汽車維修工社會(huì)服務(wù)意識(shí)試題及答案
- 2025年河南三門峽黃河明珠(集團(tuán))有限公司招聘筆試參考題庫附帶答案詳解
- 2025中考(會(huì)考)地理綜合題答題模板+簡(jiǎn)答題歸納
評(píng)論
0/150
提交評(píng)論