《鼠標(biāo)、鍵盤和OLE》PPT課件.ppt_第1頁
《鼠標(biāo)、鍵盤和OLE》PPT課件.ppt_第2頁
《鼠標(biāo)、鍵盤和OLE》PPT課件.ppt_第3頁
《鼠標(biāo)、鍵盤和OLE》PPT課件.ppt_第4頁
《鼠標(biāo)、鍵盤和OLE》PPT課件.ppt_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

VIP免費下載

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

文檔簡介

第9章鼠標(biāo)、鍵盤和OLE控件,鼠標(biāo),鍵盤事件,拖放,使用OLE控件,9.1鼠標(biāo),9.1.1鼠標(biāo)事件在程序運行時,有時需要對鼠標(biāo)指針的位置和狀態(tài)變化作出響應(yīng),因此除了常用的Click和DblClick事件之外,還需要使用鼠標(biāo)事件,鼠標(biāo)事件包括MouseUp、MouseDown和MouseMove。1.鼠標(biāo)事件的格式鼠標(biāo)事件包括MouseUp、MouseDown和MouseMove,分別是當(dāng)釋放鼠標(biāo)、按下鼠標(biāo)和移動鼠標(biāo)時觸發(fā)的。MouseUp、MouseDown和MouseMove鼠標(biāo)事件的語法格式是統(tǒng)一的。語法:PrivateSub對象_鼠標(biāo)事件(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle),9.1.1鼠標(biāo)事件,說明:(1)Button表示是哪個鼠標(biāo)鍵被按下或釋放。用0、1、2三個位表示鼠標(biāo)的左、右、中鍵,每位用0、1表示被按下或釋放,三個位的二進制轉(zhuǎn)換成十進制就是Button的值,如圖9.1所示,表9.1列出了按鈕與常數(shù)值的對應(yīng)關(guān)系。,表9.1Button常數(shù)值,圖9.1Button鍵,9.1.1鼠標(biāo)事件,(2)Shift表示當(dāng)鼠標(biāo)鍵被按下或被釋放時,Shift、Ctrl、Alt鍵的按下或釋放狀態(tài)。用0、1、2三個位表示鼠標(biāo)的Shift、Ctrl、Alt鍵,三個位的二進制轉(zhuǎn)換成十進制數(shù)就是Shift的值。Shift、Ctrl、Alt鍵切換常數(shù)如表9.2所示。,表9.2Shift的常數(shù)值,9.1.1鼠標(biāo)事件,(3)X、Y表示鼠標(biāo)指針的坐標(biāo)位置。如果鼠標(biāo)指針在窗體或圖片框中,用該對象內(nèi)部的坐標(biāo)系,其他控件則用控件對象所在容器的坐標(biāo)系。關(guān)于鼠標(biāo)鍵事件有幾點說明:移動鼠標(biāo)連續(xù)觸發(fā)MouseMove事件。按下鼠標(biāo)鍵,觸發(fā)MouseDown事件。釋放鼠標(biāo)鍵,觸發(fā)MouseUp事件。MouseUp事件之后,觸發(fā)Click事件。鼠標(biāo)事件可以區(qū)分鼠標(biāo)的左、右、中鍵與Shift、Ctrl、Alt鍵,并可識別和響應(yīng)各種鼠標(biāo)狀態(tài)。Click和DblClick事件不能識別鼠標(biāo)的左、右、中鍵與Shift、Ctrl、Alt鍵。鼠標(biāo)事件是由鼠標(biāo)指針?biāo)诘拇绑w或控件來識別的。如果按下鼠標(biāo)不放,則對象將繼續(xù)識別所有鼠標(biāo)事件(即使指針已離開對象仍繼續(xù)識別),直到用戶釋放鼠標(biāo)為止。,9.1.1鼠標(biāo)事件,2.MouseDown和MouseUp事件MouseDown和MouseUp事件分別當(dāng)鼠標(biāo)按下和釋放時觸發(fā),通??梢杂脕碓谶\行時調(diào)整控件的位置,或?qū)崿F(xiàn)某些圖形效果。MouseDown事件更常用些。【例9-1】在窗體中制作一個畫線和畫方塊的程序。界面設(shè)計:放置一個圖片框Picture1用來繪圖,三個按鈕Command1Command3,其中Command1和Command2分別為“直線”和“方塊”。功能要求:單擊Command1或Command2按鈕后,在圖片框中單擊鼠標(biāo)當(dāng)鼠標(biāo)按下時確定一個端點,當(dāng)鼠標(biāo)釋放時確定另一個端點來畫直線或畫方塊。Command3在圖片框中清除圖形。運行界面如圖9.2所示。,圖9.2運行界面,9.1.1鼠標(biāo)事件,程序代碼如下:DimC1AsIntegerDimX1AsInteger,Y1AsIntegerPrivateSubCommand1_Click()單擊直線按鈕C1=1EndSubPrivateSubCommand3_Click()單擊方塊按鈕C1=2EndSubPrivateSubForm_Load()裝載窗體C1=0EndSub,9.1.1鼠標(biāo)事件,在圖片框中按下鼠標(biāo)鍵時確定一個端點。PrivateSubPicture1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)在圖片框中按下鼠標(biāo)鍵IfButton=1ThenX1=XY1=YEndIfEndSub,9.1.1鼠標(biāo)事件,在圖片框中釋放鼠標(biāo)鍵則確定另一個端點,根據(jù)單擊的按鈕,在圖片框中由兩端點畫直線和畫方塊。PrivateSubPicture1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)在圖片框中釋放鼠標(biāo)鍵IfButton=1ThenSelectCaseC1Case1Picture1.Line(X1,Y1)-(X,Y)Case2Picture1.Line(X1,Y1)-(X,Y),BEndSelectEndIfEndSubPrivateSubForm_Load()裝載窗體C1=0EndSub,9.1.1鼠標(biāo)事件,3MouseMove事件MouseMove事件是鼠標(biāo)在屏幕上移動時觸發(fā)的,窗體和控件都能識別MouseMove事件,當(dāng)鼠標(biāo)指針在對象的邊界范圍內(nèi)時該對象就能接收MouseMove事件,除非有另一個對象捕獲了鼠標(biāo)。當(dāng)移動鼠標(biāo)時,Button參數(shù)對于MouseMove事件與MouseDown和MouseUp事件不同,MouseMove事件的Button值表示所有按鍵的狀態(tài),而MouseDown和MouseUp事件的Button的值無法檢測是否同時按下兩個以上的按鍵?!纠?-2】在圖片框中繪制連續(xù)的線和方塊。使用MouseMove事件可以連續(xù)地畫線和方塊,當(dāng)鼠標(biāo)移動時在不斷觸發(fā)的MouseMove事件中畫線和方塊。運行界面如圖9.3所示。程序代碼如下。,9.1.1鼠標(biāo)事件,當(dāng)?shù)谝淮伟聪率髽?biāo)時,開始畫線或方塊,第二次按下鼠標(biāo)就停止。PrivateSubPicture1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)在圖片框中按下鼠標(biāo)鍵IfButton=1AndC2=0ThenC2=1SelectCaseC1Case1Picture1.CurrentX=XPicture1.CurrentY=YCase2X1=XY1=YEndSelectElseC2=0EndIfEndSub,9.1.1鼠標(biāo)事件,當(dāng)在圖片框中移動鼠標(biāo)時,不斷地畫線和畫方塊,實現(xiàn)連續(xù)畫線和方塊。PrivateSubPicture1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)在圖片框中移動鼠標(biāo)IfButton=1AndC2=1ThenSelectCaseC1Case1Picture1.Line-(X,Y)Case2Picture1.Line(X1,Y1)-(X,Y),BFEndSelectEndIfEndSub,9.1.2改變鼠標(biāo)指針,1MousePionter屬性對象的MousePionter屬性用于設(shè)置鼠標(biāo)指針的形狀。在運行時對于控件,當(dāng)鼠標(biāo)經(jīng)過時就會顯示MousePionter屬性設(shè)置的形狀;對于窗體,當(dāng)鼠標(biāo)經(jīng)過空白區(qū)域或窗體中的MousePionter屬性為0的控件時,就會顯示窗體的MousePionter屬性設(shè)置的形狀。MousePionter屬性的設(shè)置值與形狀如表9.3所示。,9.1.2改變鼠標(biāo)指針,表9.3MousePionter屬性值,9.1.2改變鼠標(biāo)指針,2MouseIcon屬性當(dāng)MousePionter屬性設(shè)置為99時,可以使用MouseIcon屬性來確定鼠標(biāo)指針的形狀。有兩種方法設(shè)置MouseIcon屬性:(1)在屬性窗口中選擇MouseIcon屬性,單擊按鈕,出現(xiàn)“加載圖標(biāo)”對話框,選擇一個圖形文件為鼠標(biāo)指針形狀,可以是.ico或.cur文件。(2)在程序中使用LoadPicture函數(shù)來加載圖形文件。例如,將經(jīng)過窗體時鼠標(biāo)指針設(shè)置為用戶定義的圖標(biāo):Form1.MouseIcon=LoadPicture(c:windowswinupd.ico),9.2鍵盤事件,1.查看鍵盤按鍵的ASC碼值如果不清楚鍵盤各按鍵的ASC碼值,可以通過對象瀏覽器窗口來查看。在工具欄單擊“對象瀏覽器”按鈕,打開“對象瀏覽器”如圖9.4所示。在搜索欄鍵入“KeyCodeConstants”,單擊搜索按鈕。在“成員”欄出現(xiàn)各種鍵盤按鍵常數(shù),選擇某一個按鍵常數(shù)就可以在下面的描述中顯示按鍵的ASC碼值。,圖9.4查看鍵代碼,9.2鍵盤事件,2.KeyPress事件KeyPress事件是當(dāng)鍵盤有鍵按下時觸發(fā)的。KeyPress事件檢測的鍵有Enter、Tab、BackSpace以及鍵盤上的字母、數(shù)字和標(biāo)點符號鍵,對于其他功能鍵、編輯鍵和定位鍵,則不作響應(yīng)。語法:PrivateSub對象_KeyPress(KeyAsciiAsInteger)說明:對象:是接受鍵盤事件的對象,由具有焦點的對象接收。KeyAscii:是按鍵對應(yīng)的ASC碼值。將keyAscii改為0時可取消本次擊鍵,這樣對象便接收不到按鍵的字符。,9.2鍵盤事件,【例9-3】在文本框中輸入學(xué)生的學(xué)號和密碼,并在輸入時檢測按鍵的有效性。功能要求:在輸入用戶名的文本框中輸入用戶名,在按鍵時判斷如果不是字母鍵則將按鍵取消并將焦點設(shè)置在文本框,輸入用戶名超過8位時提示出錯。運行界面如圖9.5所示,當(dāng)輸入用戶名超過8位時的顯示。,圖9.5運行界面,9.2鍵盤事件,程序代碼如下:PrivateSubText1_KeyPress(KeyAsciiAsInteger)在用戶名文本框按鍵IfKeyAscii122Or(KeyAscii90)Then按鍵不是大小寫字母KeyAscii=0Text1.SetFocusEndIfIfLen(Text1.Text)8Then超過8位MsgBox用戶名超過8位,vbOKOnly,輸入出錯KeyAscii=0Text1.SetFocusEndIfEndSub,9.2鍵盤事件,3KeyDown和KeyUp事件KeyDown事件是當(dāng)按下按鍵時觸發(fā),KeyUp事件是當(dāng)釋放按鍵時觸發(fā),這兩個事件提供了最低級的鍵盤響應(yīng),可以報告鍵盤的物理狀態(tài)。語法:PrivateSub對象_KeyDown(KeyCodeAsInteger,ShiftAsInteger)PrivateSub對象_KeyUp(KeyCodeAsInteger,ShiftAsInteger),9.2鍵盤事件,【例9-4】在圖片框中用鍵盤鍵控制小球的運動。功能要求:在圖片框Picture1中放置一個形狀控件Shape1,窗體還有兩個按鈕Command1和Command2分別為“開始”和“結(jié)束”,單擊“開始”按鈕黃色小球Shape1出現(xiàn),單擊箭頭鍵“”和“”小球向運動左和右移動,單擊空格鍵小球向上或向下跳動。窗體中對象的屬性設(shè)置如表9.4所示。,表9.4窗體中對象的屬性設(shè)置,9.2鍵盤事件,程序代碼如下。程序分析:箭頭鍵“”的ASC碼值為37,“”的ASC碼值為39,空格鍵為32。運行界面如圖9.6所示。,圖9.6運行界面,9.3拖放,1屬性(1)DragMode屬性DragMode屬性確定拖放操作是自動方式還是手動方式。默認值為0手動方式,可以用手動方式來確定拖放操作何時開始或結(jié)束,當(dāng)DragMode屬性設(shè)置為1自動方式時,能夠?qū)σ粋€對象執(zhí)行自動拖放操作。(2)DragIcon屬性DragIcon屬性是設(shè)置拖動操作時顯示的圖標(biāo),默認源對象的灰色輪廓作為拖動的圖標(biāo),也可以設(shè)置為.ico圖標(biāo)文件作為拖動操作的圖標(biāo)。,9.3拖放,2事件(1)DragDrop事件DragDrop事件是當(dāng)一個完整的拖放動作完成時觸發(fā),即將一個控件拖動到一個對象上,并釋放鼠標(biāo)按鈕,或使用Drag方法并將其動作參數(shù)設(shè)置為2(Drop)時觸發(fā)。DragDrop事件可用來控制在拖動操作完成時將會發(fā)生的情況。語法:PrivateSub對象_DragDrop(SourceAsControl,XAsSingle,YAsSingle)(2)DragOver事件DragOver事件是當(dāng)拖放操作正在進行時發(fā)生,當(dāng)拖動對象越過一個控件時觸發(fā)該事件。語法:PrivateSub對象_DragOver(SourceAsControl,XAsSingle,YAsSingle,StateAsInteger),9.3拖放,3.方法Drag方法用于在代碼中對象的拖放行動。Drag方法可以啟動、停止或取消手工拖動。語法:對象.DragAction拖放操作的步驟如下:(1)設(shè)置DragMode屬性為1,使對象可以自動被拖放。(2)設(shè)置DragIcon屬性決定對象被拖動時鼠標(biāo)指針的形狀,可以是任何位圖或圖標(biāo)。(3)為目標(biāo)對象編寫DragDrop和DragOver事件。【例9-5】在窗體中將圖像框進行拖放。功能要求:在窗體中放置四個圖像框Image1Image4,一個框架Frame1和一個標(biāo)簽Label1,將三個小圖像框Image1Image3拖放到大圖像框Image4中,就會將圖像放置到Image4中,并將文本在標(biāo)簽Label1中顯示。,9.3拖放,屬性設(shè)置如表9.5所示,設(shè)計界面如圖9.7(a)所示,運行界面如圖9.7(b)所示,顯示將Image1中的圖片拖放到Image4中。,表9.5窗體中對象的屬性設(shè)置,9.3拖放,程序代碼如下:在圖像框Image4是目的對象,在拖放事件中將Source對象的圖形裝載到圖像框Image4中,并根據(jù)Source所對應(yīng)的拖動源對象,用分支結(jié)構(gòu)顯示標(biāo)簽Label1的內(nèi)容。PrivateSubImage4_DragDrop(SourceAsControl,XAsSingle,YAsSingle)在圖像框中拖放圖像Image4.Picture=Source.PictureIfSource=Image1ThenLabel1.Caption=鴕鳥ElseIfSource=Image2ThenLabel1.Caption=鐘ElseLabel1.Caption=五角星EndIfEndSub,9.4使用OLE控件,9.4.1添加OLE容器控件1在設(shè)計時嵌入或鏈接對象(1)使用OLE控件直接嵌入對象將OLE控件OLE1放置在窗體上時,就會出現(xiàn)“插入對象”的對話框,如圖9.8所示。選擇“新建”選項按鈕,并在“對象類型”框中選擇的一種對象類型,單擊“確定”按鈕,就嵌入了一個OLE對象。,圖9.8插入對象對話框,9.4.1添加OLE容器控件,例如,在上圖中OLE1嵌入“媒體剪輯”對象,運行工程時,在窗體上會顯示出播放媒體的菜單,運行界面如圖9.9所示。,9.4.1添加OLE容器控件,(2)使用OLE控件從文件嵌入對象在圖9.10中單擊“從文件創(chuàng)建”選項按鈕,單擊“瀏覽”按鈕選擇文件,將所選的文件當(dāng)作OLE對象插入。如圖9.10所示。(3)使用OLE控件鏈接對象如果在圖9.8或圖9.10中選擇“鏈接”復(fù)選框,就會插入一個鏈接對象。使用鏈接對象,當(dāng)應(yīng)用程序沒有運行時,對象的數(shù)據(jù)可能被另一個應(yīng)用程序更改。,圖9.10從文件創(chuàng)建,9.4.1添加OLE容器控件,(4)選擇性粘貼文件如果只需要利用文件的一部分,可以使用“選擇性粘貼”來創(chuàng)建OLE對象。使用“選擇性粘貼”的步驟如下:運行需要選擇的文件,將需要選擇的部分復(fù)制到剪貼板上。在VB中用鼠標(biāo)右鍵單擊“OLE容器控件”,從快捷菜單中選擇“特殊粘貼”菜單項,出現(xiàn)“選擇性粘貼”對話框如圖9.11所示。在對話框中選擇“粘貼”或“粘貼鏈接”選項,單擊“確定”按鈕就創(chuàng)建了OLE對象。選擇“粘貼”復(fù)選框是插入一個嵌入對象,選擇“粘貼鏈接”復(fù)選框是插入一個鏈接對象。在圖9.11中,選擇粘貼Word中的文本內(nèi)容。,圖9.11選擇性粘貼Word文本,9.4.1添加OLE容器控件,3在運行時創(chuàng)建顯示“插入對象”對話框如果在設(shè)計時不選擇OLE對象,則在運行時也可以使用OLE對象的InsertObjDlg和PasteSpecialDlg方法來顯示“選擇性粘貼”和“插入對象”對話框,并在對話框中創(chuàng)建OLE對象。語法:對象.InsertObjDlg對象.PasteSpecialDlg(1)InsertObjDlg方法InsertObjDlg方法用來顯示“插入對象”對話框,提供可用的對象清單,并根據(jù)用戶的選擇創(chuàng)建對象。例如,顯示“插入對象”對話框:OLE1.InsertObjDlg(2)PasteSpecialDlg方法PasteSpecialDlg方法用來顯示“選擇性粘貼”對話框,允許用戶從系統(tǒng)剪貼板中將對象粘貼到OLE控件。,9.4.1添加OLE容器控件,4在運行時創(chuàng)建鏈接或嵌入對象(1)創(chuàng)建鏈接對象用OLE控件的CreateLink方法,在運行時從文件中創(chuàng)建一個鏈接對象。語法:CreateLinkSourceDoc,SourceItem說明:SourceDoc:為文件參數(shù),從該文件創(chuàng)建對象。SourceItem:從源文件中鏈接的數(shù)據(jù)。例如,創(chuàng)建鏈接對象:OLE1.CreateLinkC:WINDOWSMediachord.wav(2)創(chuàng)建嵌入對象在運行時,從文件中創(chuàng)建一個嵌入的對象,可以使用CreateEmbed方法。語法:CreateEmbedSourcedoc,Class,9.4.2OLE容器控件的屬性、方法和事件,1.OLE控件的常用屬性(1)Object屬性通過使用OLE控件的Object屬性,可以使用鏈接或嵌入對象的屬性和方法。Object屬性在運行時是只讀屬性,它保持對OLE控件中對象的引用。使用該屬性O(shè)LE控件必須包含可編程的對象。語法:OLE控件名.Object.屬性|方法(2)AutoActive屬性AutoActive屬性用于設(shè)置激活OLE控件對象的方式,該屬性對應(yīng)的各種方式如表9.6所示。,表9.6各種激活方式,9.4.2OLE容器控件的屬性、方法和事件,(3)OLEType屬性O(shè)LEType屬性返回OLE容器控件中對象的狀態(tài)。0-vbOLELinked表示鏈接,1-vbOLEEmbedded表示嵌入,2-vbOLENone表示不包含對象。(4)Class屬性Class屬性為內(nèi)嵌對象的類名。例如,當(dāng)嵌入“媒體剪輯”時,OLE1控件設(shè)置為“OLE1.Class=MPlayer”。(5)SizeMode屬性SizeMode屬性用來指定OLE對象如何調(diào)整大小,或如何顯示圖像。0為剪裁,對象按實際大小顯示;1為伸展,調(diào)整對象圖像的大小使其充滿OLE控件;2為自動,如果顯示對象的大小作了改變,OLE控件自動調(diào)整大?。?為縮放,重新調(diào)整對象的大小使其盡可能充滿OLE控件,且仍然維持該對象原來的比例。,9.4.2OLE容器控件的屬性、方法和事件,2.OLE控件的常用方法(1)Update方法要在OLE控件中顯示當(dāng)前的最新數(shù)據(jù),則要使用控件的Update方法。運行時對源文件的更改不會自動出現(xiàn)在OLE控件中,必須使用Update方法。語法:OLE對象名.Update(2)Delete方法Delete方法刪除指定對象,釋放關(guān)聯(lián)的內(nèi)存,用于顯式地刪除對象。當(dāng)關(guān)閉窗體或?qū)ο蟊灰粋€新對象取代時,對象都將被自動刪除。(3)DoVerb方法在運行時,可以使用OLE控件的DoVerb方法激活一個對象,進行編輯等操作。有些嵌入的對象可以通過雙擊來從OLE控件內(nèi)部激活,稱為現(xiàn)場激活。(4)Close方法如果要退出OLE對象的激活狀態(tài),可以調(diào)用OLE控件的Close方法。,9.4.2OLE容器控件的屬性、方法和事件,【例9-6】在學(xué)生

溫馨提示

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

評論

0/150

提交評論