vb中鍵盤鼠標(biāo)事件_第1頁
vb中鍵盤鼠標(biāo)事件_第2頁
vb中鍵盤鼠標(biāo)事件_第3頁
vb中鍵盤鼠標(biāo)事件_第4頁
vb中鍵盤鼠標(biāo)事件_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

12章鍵盤與鼠標(biāo)大事過程VisualBasic應(yīng)用程序能夠響應(yīng)多種鍵盤大事和鼠標(biāo)大事。例如,窗體、圖片框與圖像控件都能檢測鼠標(biāo)指針的位置,并可判定其左、右鍵是否已經(jīng)按下,還能響應(yīng)鼠標(biāo)按鈕與Shift、CtrlAlt鍵的各種組合。利用鍵盤大事可以編程響應(yīng)多種鍵盤操作,也可以解釋、ASCII字符。VisualBasicOLE的拖放功能,可用控件的Drag方法連同某些屬性和大事宋實(shí)現(xiàn)控件的拖放操作。OLE的拖放使應(yīng)用程序的數(shù)據(jù)交換功能大大增加。術(shù)。鍵盤大事發(fā)大事,而且還供給進(jìn)展數(shù)據(jù)輸入的手段以及在窗口和菜單中移動(dòng)的根本形式。鍵盤大事有三種,即KeyPress、KeyUp和KeyDown大事。窗體和可承受鍵盤輸入的控件(如文本框TextBox、命令按鈕CommandButton、圖片框PictureBox、組合框ComboBox等)都可識別這些大事。值得留意的是,只有獲得焦點(diǎn)的對象才能夠承受鍵盤大事。對于窗體,只有成為活動(dòng)窗體并且窗體中的任何控件均未獲得焦點(diǎn)時(shí),才會(huì)產(chǎn)生窗體的鍵盤大事。窗體中任何控件已經(jīng)獲得焦點(diǎn)時(shí),會(huì)產(chǎn)生控件的鍵盤大事。KeyPress大事當(dāng)用戶按下鍵盤上的某個(gè)鍵時(shí),將觸發(fā)KeyPress大事。該大事可以用于窗體和大局部標(biāo)準(zhǔn)控件,嚴(yán)格來說,當(dāng)按下某個(gè)鍵時(shí),所觸發(fā)的是具有輸入焦點(diǎn)(FOCUS)的那個(gè)控件的KeyPress大事。在某一時(shí)刻,輸入焦點(diǎn)只能位于某一個(gè)控件上,假設(shè)窗體上沒有可見或有效的控件,則輸入焦點(diǎn)位于窗體上。當(dāng)一個(gè)控件或窗體擁有輸入焦點(diǎn)時(shí),該控件或窗體將承受從鍵盤上輸入的信息。例如,假定一個(gè)文本框擁有輸入焦點(diǎn),則從鍵盤上輸入的任何字符都將在該文本框上回顯。KeyPress大事過程的一般格式是:PrivateSubKeyPress(KeyAsciiasInteger)大事過程EndSub假設(shè)承受KeyPress大事的對象為控件數(shù)組,對應(yīng)的大事過程的格式為:PrivateSub對象名_KeyPress(IndexasInteger,KeyAsciiASInteger)大事過程EndSubIndex說明:“對象名”是承受鍵盤大事的對象的名稱,如文本框、窗體等。KeyAsciiKeyPress大事過程的參數(shù),返回用戶所按鍵的ASCII值。如按下小寫字母“a97,按下大寫字母“A65ASCII值比大寫字母32。0~9ASCII48~57KeyPressKeyAscii0,可以取消該字符和這次按鍵操作。留意:在默認(rèn)狀態(tài)下控件的鍵盤大事優(yōu)于窗體的鍵盤大事,岡此在發(fā)生鍵盤大事時(shí),總是先激活控件的鍵盤大事。假設(shè)期望窗體先承受鍵盤大事,則必需把窗體的KeyPreviev屬性設(shè)置為TrueKeyPress[12-1]將輸入到文本框中的全部字符都強(qiáng)制轉(zhuǎn)換為大寫字符。KeyPress大事將輸入的每一個(gè)字符轉(zhuǎn)換為大寫。程序代碼:PrivateSubText1_KeyPress(KeyAsciiAsInteger)KeyAscii=Asc(UCase(Chr(KeyAscii)))EndSubKeyAsciiASCIIChrASCI:碼轉(zhuǎn)換成對應(yīng)的字符,UCase函數(shù)將字符轉(zhuǎn)換為大寫,AscASCII碼。[12-2]限制在文本框中輸入的字符為數(shù)值。KeyPress大事將輸入的每一個(gè)字符進(jìn)展推斷,當(dāng)用戶按下的不是04之間的鍵時(shí),使用KeyPress大事給用戶進(jìn)展提示,并使輸入的值不在文本框中顯示出來。PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii<48orKeyAscii>57Then”0~9MsgBox“數(shù)字非法!只能輸入數(shù)字字符。“KeyAscii=0”撤銷該字符,也不顯示EndIfEndSubKeyDownKeyUp大事KeyDown大事在按下鍵盤時(shí)觸發(fā),KeyUp大事則在釋放鍵盤時(shí)觸發(fā)。KeyDown大事和KeyUp大事供給了最低級的鍵盤響應(yīng),可以報(bào)告鍵盤的物理狀態(tài)。按下某個(gè)鍵時(shí)也會(huì)觸發(fā)KeyPressKeyDown大事不同的是,KeyDownKeyUp大事返回的是鍵盤KeyPess返回的是“字符”的ASCII碼。例如,AASCII碼,在輸入小寫“a”時(shí),KeyDown大事獲得與“AASCII碼,即KeyDown大事不區(qū)分大小寫,而KeyPressASCII字符處理。KeyDown大事過程的—般格式是:PrivateSub對象名_KeyDown(KeyCodeAsInteger,ShiftAsInteger)大事過程EndSubKeyUp大事過程的一般格式是:PrivateSubKeyUp(KeyCodeAsInteger,ShiftAsInteger)大事過程EndSub說明:“對象名”是窗體和能承受鍵盤大事的控件的名稱。KeyCodeASCII值。Shift是描述Shift、CtrlAlt鍵的狀態(tài)的一個(gè)整數(shù),Shift參數(shù)是一個(gè)位域,由3個(gè)二進(jìn)制位組成,最低位(0)Shift鍵的狀態(tài),中間位1)Ctrl鍵的狀態(tài),最高位(2)表示AltVisualBasicvbShiftMaskvbCtrlMask、vbAltMask12-1列出了Shift參數(shù)的取值。12-1Shift參數(shù)的取值及含義十進(jìn)制數(shù)二進(jìn)制數(shù)十進(jìn)制數(shù)二進(jìn)制數(shù)VB000031001vbShinMaskShift2010vbCtrlMaskCtrl3011vbShinMask+vbCtrlMaskShiftCtrl4100vbAltMaskAlt5101vbShinMask+vbAltMaskShiftAlt6110vbCtrlMask+vbAltMaskCtrlAlt7111vbShinMask+vbCtrlMask+vbAltMask3[12-3]推斷是否按下了某個(gè)鍵。以下程序代碼可推斷是否按下了“A”鍵:PrivateSubForm_KeyDown(KeyCodeAsInteger,ShiftAsInteger)IfKeyCode=vbKeyAThenMsgBox“YouPressedtheAkey“EndSub請讀者用KeyPress大事過程實(shí)現(xiàn)類似功能,考慮一下有什么不同。[12-4]上檔符號鍵的監(jiān)測。問題分析:要監(jiān)測是否按下了鍵盤上的上檔符號鍵,只使用KeyCode是不夠的,需要Shift參數(shù)。下面的程序可推斷是否按下了“*”鍵:PrivateSubForm_KeyDown(KeyCodeAsInteger,ShiftAsInteger)IfKeyCode=vbKey8AndShift=1ThenMsgBox“您按下了*鍵“EndIfEndSubANDShift的值確定是否按下了某個(gè)特別鍵。[12-5]推斷是否按下了AltAlt+F6時(shí)關(guān)閉窗體。Alt+F6組合鍵:PrivateSubForm_KeyDown(KeyCodeAsInteger,ShiftAsInteger)IfKeyCode=vbKeyF6AndShift=4ThenUnloadMeEndIfEndSubKeyPressKeyDown/KeyUp大事的區(qū)分:KeyPress大事返回的是字符的ASCIIKeyDown/KeyUp返回的是鍵的代碼。例如,按“A”和“a”返回的是同一個(gè)KeyCode值,由于它們是同一個(gè)鍵:而對KeyPress來說,按“A”和“aASCII碼是不一樣的。在KeyDown/KeyUp大事中,為推斷Shift參數(shù)。KeyPress大事識別的擊鍵范圍比KeyDown/KeyUpFll-F12KeyPressKeyDown/KeyUp大事。鼠標(biāo)大事在Windows應(yīng)用程序中,與鼠標(biāo)操作相關(guān)的大事較多,除了常用的單擊大事Click、雙擊大事DblClick外,有些程序還需要對鼠標(biāo)指針的位置和狀態(tài)變化作出響應(yīng),因此需要使MouseDown、MouseUpMouseMove。鼠標(biāo)大事鼠標(biāo)大事是由鼠標(biāo)動(dòng)作而引起的。三個(gè)根本的鼠標(biāo)大事是:MouseDown大事:按下鼠標(biāo)按鈕時(shí)觸發(fā)。MouseUp大事:釋放鼠標(biāo)時(shí)觸發(fā)。MouseMove大事:移動(dòng)鼠標(biāo)光標(biāo)時(shí)觸發(fā)。鼠標(biāo)大事過程的一般格式是:PrivateSub對象名—大事名(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)說明:“對象名”可以是窗體及能承受鼠標(biāo)大事的大多數(shù)控件。當(dāng)鼠標(biāo)指針位于窗體上時(shí),窗體將識別鼠標(biāo)大事;當(dāng)鼠標(biāo)指針在控件上時(shí),控件將識別鼠標(biāo)大事。假設(shè)按下鼠標(biāo)按鈕個(gè)放,則即使指針已移離對象,對象仍將連續(xù)識別全部鼠標(biāo)大事,直到用戶釋放按鈕為止。MouseDown、MouseUpMouseMove。Button33個(gè)按鈕的狀態(tài):假設(shè)某個(gè)按鈕按下,其對應(yīng)的二進(jìn)制位就被設(shè)置為10。將三位二進(jìn)Button的值。Button參數(shù)最低位(0)對應(yīng)左按鈕,中間位(位1)對應(yīng)右按鈕,最高位(2)12-2給出了Button參數(shù)的取值及對應(yīng)的含義。12-2MouseMoveButton參數(shù)的取值及含義十進(jìn)制數(shù)二進(jìn)制數(shù)常數(shù)意義00003個(gè)鍵都沒有按下1001vbLeftButton按下左按鈕2010vbRi~htButton按下右按鈕301lvbLeftButton+vbRightButton同時(shí)按下左、右按鈕4100vbMiddleButton按下中間按鈕5101vbLeftButton+vbMiddleButton同時(shí)按下左、中間按鈕6110vbRightButton+vbMiddleButton同時(shí)按下右、中間按鈕7111vbLeftButton+vbRightButton+vbMiddleButton3個(gè)按鈕同時(shí)按下Shift參數(shù)用來監(jiān)測鍵盤上ShiftCtrlAltShift參數(shù)一樣。(5)X、Y參數(shù)表示鼠標(biāo)指針的坐標(biāo)位置,X、Y的值與當(dāng)前對象的坐標(biāo)系有關(guān)。1.MouseDownMouseUp大事MouseDownMouseUP在窗體上的位置,或?qū)崿F(xiàn)某些圖形效果。MouseDown大事與Move方法結(jié)合起來使用,就可以將命令按鈕移動(dòng)到窗體的不同位置。鼠標(biāo)指針的位置打算按鈕的位置:在單擊窗體的任意位置時(shí),控件將移動(dòng)到光標(biāo)位Form_MouseDown將執(zhí)行此操作:PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Command1.MoveX,YEndSub[12-6]在窗體中畫線。MouseDownMouseUp大事,然后在鼠標(biāo)按鈕被釋放的位置消滅另一個(gè)端點(diǎn)。Line方法即可畫線。程序代碼為:DimX1,Y1PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)X1=X:Y1=YEndSubPrivateSubFormMouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Line(X1,Y1)-(X,Y)EndSubMouseDownX1Y1MouseUp大事發(fā)生時(shí),則以X1,Y1為起點(diǎn)坐標(biāo),當(dāng)前鼠標(biāo)指針位置X,Y為終點(diǎn),繪制一條直線,如圖12-1所示。12-1結(jié)合MouseUpMouseDown大事畫直線[12-7]在窗體上建一個(gè)名稱為List1的列表框和一個(gè)名稱為Text112-2所示。編寫窗體的MouseDown大事過程,程序運(yùn)行后,假設(shè)用鼠標(biāo)左鍵單擊窗體,則從鍵盤中輸入要添加到列表框中的工程(3項(xiàng)):假設(shè)剛鼠標(biāo)右鍵單擊窗體,則11-3所示。12-2程序界面設(shè)計(jì)12-3程序運(yùn)行結(jié)果程序代碼如下:PrivateSubFormMouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YASSingle)IfButton=1ThenText1.Text=InputBox(“請輸入要添加的工程“)List1.AddltemText1.TextEndIfIfButton=2ThenText1.Text=InputBox(“請輸入要?jiǎng)h除的工程“)ForI=0ToList1.ListCount-1List1.List(1)=Text1.TextThenList1.RemoveltemIEndIfNextIEndIfEndSub2.MouseMove大事MouseMove大事,窗體和控件均能識別該大事。當(dāng)移動(dòng)鼠標(biāo)時(shí),MouseMove大事不斷發(fā)生,但并不是對鼠標(biāo)經(jīng)過的每個(gè)像素都會(huì)觸發(fā)。Form_MouseMoveCircle方法:PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XASSingle,YAsSingle)Circle(X,Y),50EndSub12-4MouseMove大事越少。眾多圓圈擠在一起,說明鼠標(biāo)在此位置移動(dòng)緩慢。12-4MouseMove大事留意:MouseMove大事,因此MouseMove大事不應(yīng)去做需要大量時(shí)間的工作。ButtonMouseMoveMouseDown、MouseUp大事不同,MouseMoveButtonMouseDownMouseUpButton值無法檢測是否同時(shí)按下兩個(gè)以上的按鍵。[12—8]制作一個(gè)簡潔的畫圖程序,使其具有繪畫、擦除功能。問題分析:在窗體中添加一個(gè)圖片框Picture1,兩個(gè)按鈕(數(shù)組形式)12-5所示。Picture1中按下鼠標(biāo)左鍵后拖動(dòng)就可以隨便地畫線或?qū)懽?,釋放鼠?biāo)后就停頓畫線。單擊擦除按鈕可通過畫一個(gè)白色的圓點(diǎn)將圖像擦除。12-5畫圖程序代碼如下:OptionExplicitDimMouseStateAsIntegerDimIsdrawASBooleanPdvateSubCommand1_Click(IndexAsInteger)SelectCaseIndexCase0 ”單擊繪畫按鈕MouseState=1Case1 ”單擊擦除按鈕MouseState=2EndSelectEndSubPrivateSubPicture1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=1AndMouseState=2ThenPicture1.FillStyle=0Picture1.FillColor=RGB(255,255,255)Picture1.ForeCOlOr=RGB(255,255,255)Picture1.Circle(X,Y),50ElseIFButton=1AndMouseState=1ThenISdraw=TruePicture1.CurrentX=XPicture1.CurrentY=YEndIfPiCture1.AutoRedraw=TrueEndSubPrivateSubPicture1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Picture1.ForeColor=RGB(0,0,0)IfIsdrawAndMOuseState=1ThenPicture1.Line-(X,Y)EndIfEndSubPrivateSubPicture1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=1AndMouseState=1ThenIsdraw=FalseEndSub程序中同時(shí)使用了MouseMove,MouseDown和MouseUP大事,當(dāng)鼠標(biāo)按下時(shí)觸發(fā)MouseDownMouseMove大事,線的起點(diǎn)為上次的終點(diǎn)。當(dāng)鼠標(biāo)釋MOUseUpIsdrawFalse就不能畫線。員標(biāo)指針WindowsIVisualBasicMousePointerMouseIcon屬性來設(shè)置鼠標(biāo)指針的外形。1.MousePointer屬性對象的MousePointerMousePointer12-30-DefaultWindows箭頭指針。12-2MousePointer屬性的取值和鼠標(biāo)指針的外形常量值外形vbDefault0(默認(rèn)值)外形由對象打算vbArrow1箭頭vbCrosshair2十字線VbIconPointer3I型vblbeam4圖標(biāo)(嵌套方框)vbSizePointer5尺寸線(4個(gè))VbSizeNWSE6左上-右下尺寸線VbSizeWE7水平尺寸線vbUpArrow8向上的箭頭vbHourglass9沙漏vbNoDrop10沒有入口:一個(gè)圓形記號vbArrowHourglass11箭頭和沙漏VbSizeNESW12左上-右下尺寸線VbSizeNS12垂直尺寸線vbArrowQuestion14箭頭和問號vbSizeAll15四向尺寸線vbCustom99MouseIcon屬性指定的自定義圖標(biāo)Text1時(shí)鼠標(biāo)的指針為I型:Text1.MousePointer=32.MouseIcon屬性MousePointer99時(shí),可以用MouseIcon屬性將鼠標(biāo)指針設(shè)置為任意外形。設(shè)置MouseIconLoadPicture函數(shù)加載圖形文件設(shè)置??梢允褂脠D標(biāo)或光標(biāo)文件宋設(shè)置鼠標(biāo)指針。圖標(biāo)就是.icoVisualBasic的圖標(biāo)文件一樣。光標(biāo)就是.cur文件,本質(zhì)上像圖標(biāo)一樣是位圖,但是,光標(biāo)主要是表示鼠標(biāo)指針的外形而創(chuàng)立的。拖放操作在運(yùn)行Windows程序時(shí),可以使用鼠標(biāo)拖放功能便利地轉(zhuǎn)變某些對象的位置,這種操作稱為拖放。拖放的一般過程是:把鼠標(biāo)光標(biāo)移到一個(gè)對象上,按廠鼠標(biāo)鍵,不要松開,然來位置的對象稱為源對象,而拖動(dòng)后放下的位置的對象稱為目標(biāo)對象,在拖動(dòng)過程中,被拖動(dòng)的對象變?yōu)榛疑?。VisualBasic支持兩種拖放,即控件拖放和OLE拖放。拖放包括兩個(gè)操作:按下鼠標(biāo)按鈕并移動(dòng)控件的操作叫拖動(dòng)(Dragging),釋放按鈕的操作叫放下(Dropping)??丶戏臯isualBasic中,除菜單、計(jì)時(shí)器、對話框控件、圖形控件等以外的控件都支持拖放。下面介紹與控件拖放有關(guān)的屬性、大事和方法。屬性(1)DragMode屬性該屬性用來設(shè)置控件的拖放模式,共有兩種:自動(dòng)拖動(dòng)模式(Automatic)和手動(dòng)拖動(dòng)模式(Manual)DragMode0(默認(rèn)值)DragMode1時(shí)表示自動(dòng)拖動(dòng)。DragMode1,則啟用自動(dòng)拖動(dòng)模式。當(dāng)用戶在源對象上按下鼠標(biāo)左鍵同DragDrop大事。值得留意的是:假設(shè)沒有進(jìn)展代碼設(shè)計(jì),對象不會(huì)移動(dòng)到的位置上或加到目標(biāo)對象中,用戶肯定要在目標(biāo)對象的DragDrop大事中進(jìn)展程序設(shè)計(jì)才能實(shí)現(xiàn)真正的拖放。在源對象被拖到目標(biāo)對象上的過程中,假設(shè)經(jīng)過其他對象,則在這些對象上產(chǎn)生DragOverDragOverDragDrop之前。DragMode1時(shí),它不能再承受ClickMouseDown大事。DragMode0,則啟動(dòng)手工拖動(dòng)模式,此時(shí),必需在MouseDown大事過DragDragMode0ClickMouseDown大事,其他狀況與自動(dòng)拖動(dòng)模式一樣。(2)DragIcon屬性在拖動(dòng)控件的過程中,被拖動(dòng)的控件并沒有移動(dòng),隨鼠標(biāo)移動(dòng)的是代表該控件的圖標(biāo)。拖動(dòng)控件時(shí),VisualBasicDragIcon屬性進(jìn)展設(shè)DragIconMouseIcon屬性類似。大事(1)DragDrop大事將源控件(圖標(biāo))DragDropDragDrop大事過程的一般格式為:PrivateSub對象名_DragDrop(SourceAsControl,XasSingle,YAsSingle)說明:①對象名是指鼠標(biāo)指針?biāo)傅哪繕?biāo)對象名。②Source參數(shù)為正在被拖動(dòng)的控件(源對象),可在大事過程中設(shè)置和使用該控件的屬性和方法。例如:Source.Enabled=False③X、Y是拖放完畢時(shí)鼠標(biāo)指針的位置。(2)DragOver大事在拖動(dòng)對象的過程中,當(dāng)鼠標(biāo)指針越過一個(gè)控件時(shí),被越過的控件將產(chǎn)生DragOver大事。DragOver大事是當(dāng)拖放操作正在進(jìn)展時(shí)發(fā)生。DragOver大事過程的一般格式是:PrivateSub對象名_DragOver(SourceAsControl,XAsSingle,YAsSingle,StateAsInteger)說明:①Source,x,yDragDrop大事一樣。②State0(vbEnter)表示鼠標(biāo)指針正在進(jìn)入目標(biāo)對象:假設(shè)為1(vbLeave)表示正在離開目標(biāo)對象;假設(shè)為2(vbOver)表示正經(jīng)過目標(biāo)對象。TypeOf由于當(dāng)源對象被拖放時(shí),源對象作為Source參數(shù)傳入大事過程中,Source為對象變量,它相應(yīng)的方法進(jìn)展操作。語法格式為:IfTypeOf對象變量Is控件類型Then其中,TypeOf函數(shù)的返回值為對象變量所引用控件的類型。[12-9]自動(dòng)方式拖放圖片。EXEForm1Picture1和Picture2Picture1Picture12-6所示。12-6拖放圖片程序代碼為:PrivateSubForm_LoadPicture1.DragMode=1”自動(dòng)拖放EndSubPrivateSubPicture2_DragDrop(SourceAsControl,XAsSingle,YAsSingle)IfTypeOfSourceIsPictureBoxThen 源對象是葉;是圖片框Picture2.Picture=Source.PictureEndIfEndSubDrag方法Drag方法用于代碼中對象的拖放行為,其語法格式如下:對象名.DragActionAction12-4使示。12-4Drag方法中Action參數(shù)的取值及其含義常數(shù)常數(shù)VbCancelVbBeginDragVbEnddrag值012含義取消指定控件的拖放Drag方法消滅在控件的大事過程中時(shí),允許拖放指定的控件DrasDroP大事ActionVbBeginDragDragAction參VbEnddragDragDropVbCancel則取DragDrop事什。[12-10]拖放操件應(yīng)用程序例如。啟動(dòng)一個(gè)的工程,在窗體卜添加一個(gè)文本框,一個(gè)分組 框。然后這兩個(gè)控件的DragMode屬性都改成1—Automatic。文本框的DragIcon屬性足“d:\VB教程\拖放操作\BOO.ic,分組框的DragIcon屬性是“d\VB教程\拖放操作\phone0.IC。將窗體的Caption屬性設(shè)置為“拖放文本框的圖標(biāo)是“書,拖放分組框的圖標(biāo)是“機(jī)。將下過程添加到窗體的DragDrop大事中:PrivateSubForm_DragDrop(sourceAscontrol,XAsSingle,YAsSingle)Source.MoveX,YEndSub程序執(zhí)行時(shí),將鼠標(biāo)放在文本框上,鼠標(biāo)指針變成書的圖標(biāo),然后可以將文本框拖到位置。將鼠標(biāo)放在分組框上,鼠標(biāo)指針變成機(jī)圖標(biāo),然后可以將分組框拖到位置。程序的執(zhí)行結(jié)果如圖12-7所示。由于屏幕硬拷貝不能包括鼠標(biāo)指針,所以圖中見不到“書”和“機(jī)”圖標(biāo)。12-7拖放操作例如程序的執(zhí)行結(jié)果OLE拖放OLEVisualBasic供給的最強(qiáng)大、最有用的功能之一,支持在控件和控件之間、Windows應(yīng)用程序之間拖動(dòng)文本和圖形。OLE拖放包括從對象拖動(dòng)數(shù)據(jù)和將拖動(dòng)數(shù)據(jù)放入對象。VisualBasicOLE拖放。OLE拖放也分為自動(dòng)拖放和手動(dòng)拖放。自動(dòng)拖放無需編寫任何代碼,因此比較簡潔實(shí)現(xiàn)。[12-11]文字的拖放。EXEForm1窗體中添加兩個(gè)文本框Text1Text2,輸入以下代碼:PrivateSubForm_LoadText1.OLEDragMode=1 ”自動(dòng)拖動(dòng)源Text2.OLEDropMode=2 ”O(jiān)LE拖放EndSub運(yùn)行程序,文本框中輸入假設(shè)干字符,用鼠標(biāo)選中Text1中的局部字符,然后拖動(dòng)這些選Text2上,釋放鼠標(biāo)。習(xí)題十二一.選擇題1.編寫如下大事過程:PrivateSubForm_KeyPress(KeyAsciiAsInteger)PrintChr(KeyAscii);Print(KeyAscii)EndSub運(yùn)行程序,按下“a”鍵輸出結(jié)果為 (B)a65 。(A)A65 (B)a65 (C)65A (D)65a2,在窗體上畫一個(gè)命令按鈕和 個(gè)文本框,并把窗體的KeyPress屬性設(shè)置為True,然后編寫如下代碼:DimAllAsStringPrivateSubCommand1_ClickText1.text=Ucase(A11)EndSubPrivateSubForm_KeyPress(KeyAsciiAsInteger)All=All+Chr(KeyAscii)EndSub程序運(yùn)行后在鍵盤上輸Hell單擊命令按鈕則文本框中顯示的內(nèi)容為 (A)HELLO (B)Hello (C)不顯示任何信息 (D)出錯(cuò)3.編寫如下大事過程:PrivateSubForm_KeyDown(KeyCodeAsInteger,ShiftAsInteger)PrintChr(KeyCode):PrintKeyCodeEndSub運(yùn)行程序后,按下“E”輸出為 。(A)E69 (B)e69 (C)69E (D)69eKeyPreview屬性設(shè)置為True,然后編寫如下過程:PrivateSubForm_KeyDown(KeyCodeASInteger,ShiftAsInteger)Printchr(KeyCode);EndSubPrivateSubForm_KeyUp(KeyCodeAsInteger,ShiftAsInteger)PrintChr(KeyCode+32)EndSub當(dāng)按下“a”時(shí),輸入為 。(A)Aa (B)A,A (C)a,a (D)a,A編寫以下大事過程:PrivateSubForm_KeyUp(KeyCodeAsInteger,ShiftAsInteger)KeyCode=KeyCode+32PrintUcase(Chr(KeyCOde))EndSub運(yùn)行程序,當(dāng)按下“A”鍵時(shí),輸出為 A 。(A)A (B)65 (C)a (D)97編寫如下大事程序:PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)IfShift=3AndButton=2ThenPrint“BBBB“EndIfEndSub運(yùn)行后,為了在窗體上輸出“BBB,應(yīng)執(zhí)行的操作為 D 。(A)同時(shí)按下Shitt鍵和鼠標(biāo)左鍵。 (B)同時(shí)按下Shin鍵和鼠標(biāo)右鍵。(C)同時(shí)按下Ctrl,Alt和鼠標(biāo)左鍵。 (D)同時(shí)按下Ctrl,Shift和鼠標(biāo)右鍵。7.編寫如下程序:DimsumAsIntegerPrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=1Thensum=sum+1ElseIfButton=2ThenSum=sum-1EndIfEndSubPrivateSubCommand1_ClickPrintsumEndSub運(yùn)行程序,當(dāng)鼠標(biāo)在窗體上左擊3次,右擊1次,再單擊按鈕,輸出為 A 。(A)l (B)-1 (C)2 (D)4編寫以下程序:PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfShift=AndButton=ThenPrint“HELLO“EndIfEndSub運(yùn)行程序后,當(dāng)同時(shí)按下Shift鍵和Alt鍵并用鼠標(biāo)左擊時(shí),輸出“HELLO”,請選擇程序中Shift和Button參數(shù)的值 D 。(A)1,3 (B)2,1 (C)3,2 (D)5,1在某個(gè)程序中想要把鼠標(biāo)的光標(biāo)變?yōu)樯陈┩庑蝿tMousepointer的值應(yīng)為D 。(A)1 (B)3 (C)14 (D)11二.填空題1KeyPress大事過程時(shí),KeyAscii表示按鍵的ASCIIA碼值。2KeyPreview屬性設(shè)胃為True,并編寫如下大事過程:PrivateSubForm_KeyPress(KeyAsciiAsInteger)PrintKeyAsciiEndSub當(dāng)按下“a”鍵時(shí),輸出為65 3.在窗體上畫一個(gè)文本框,然后編寫如下過程:PrivateSubText1_KeyPress(KeyAsciiAsInteger)DimchaAsStringCha=Chr(KeyAscii)KeyAscii=Asc(Ucase(cha))Text1.text=String(6,KeyAscii)EndSub運(yùn)行程序后,假設(shè)在鍵盤上輸入“,則文本框中顯示的內(nèi)容為AAAAAAA 4.PrivateSubForm_LoadShowText2.Text=““Text1.Text=““Text.SetFocusEndSubP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論