OLE(對象連接與嵌入)_第1頁
OLE(對象連接與嵌入)_第2頁
OLE(對象連接與嵌入)_第3頁
OLE(對象連接與嵌入)_第4頁
OLE(對象連接與嵌入)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、OLEOLE1OLE概述OLE控件通常用來創(chuàng)建以文檔處理為中心的應(yīng)用程序,在這種應(yīng)用程序中,你把不同應(yīng)用程序的數(shù)據(jù)組合起來,創(chuàng)建單個文檔。這種類型的應(yīng)用程序可能是字處理器,允許用戶輸入文本之后再嵌入一個工作表或圖表。2鏈接的對象鏈接一個對象時,實際上是在應(yīng)用程序中插入鏈接對象的占位符。例如,當(dāng)把電子表格單元的范圍與Visual Basic應(yīng)用程序鏈接時,與這個單元相關(guān)的數(shù)據(jù)是存儲在另一文件中的;在OLE控件中,只存儲數(shù)據(jù)的鏈接和代表數(shù)據(jù)鏈接的圖像。運行時,可以激活鏈接對象,電子表格應(yīng)用程序便自動啟動,然后你可以使用電子表格應(yīng)用程序來編輯那些電子表格單元。當(dāng)編輯一個鏈接對象時,編輯操作是在OLE

2、控件外的單獨窗口中完成的。當(dāng)對象與Visual Basic應(yīng)用程序鏈接時,可以從數(shù)據(jù)鏈接的應(yīng)用程序中查看對象的當(dāng)前數(shù)據(jù)。數(shù)據(jù)只存在于提供對象的應(yīng)用程序。3嵌入的對象使用OLE控件,或把一個對象的類加入工具箱,可以創(chuàng)建嵌入對象。使用嵌入的對象,與對象相關(guān)的全部數(shù)據(jù)都將被復(fù)制和納入OLE控件,把控件的內(nèi)容存入文件時,這個文件含有創(chuàng)建對象的應(yīng)用程序名稱,對象數(shù)據(jù)和對象的源文件包含的圖像。由于這個原因,嵌入對象可能會大大增加文件的大小。與鏈接對象不同,其它應(yīng)用程序不能訪問嵌入對象中的數(shù)據(jù)。當(dāng)想要應(yīng)用程序保持在另一應(yīng)用程序中創(chuàng)建和編輯的數(shù)據(jù)時,嵌入是有效的手段。對于嵌入的對象,當(dāng)你激活對象時,創(chuàng)建這個對

3、象的Active X部件被容器應(yīng)用程序調(diào)用,這個對象的數(shù)據(jù)被打開和編輯。另外,還在容器應(yīng)用程序中顯示創(chuàng)建這個對象的應(yīng)用程序的用戶界面和功能區(qū),使用戶能現(xiàn)場控制對象。4設(shè)計時用OLE控件插入對象把OLE控件拖到窗體上,彈出【插入對象】對話框,單擊【從文件中創(chuàng)建】單選框,單擊【瀏覽】按鈕,彈出【瀏覽】對話框,選擇想要插入的文件,單擊【插入】按鈕,返回【插入對象】對話框,在【插入對象】對話框中,單擊【確定】按鈕,創(chuàng)建嵌入對象。嵌入對象的數(shù)據(jù)是有可能被更改的。如果讓用戶輸入的更改在下次應(yīng)用程序運行時出現(xiàn),就必須使用Save To File方法來保存數(shù)據(jù)。5運行時用OLE控件創(chuàng)建對象要在運行時創(chuàng)建鏈接和

4、嵌入對象,需要在代碼中使用OLE控件的方法和屬性。通過使用OLE對象的Object屬性,可以使用鏈接或嵌入對象的屬性和方法。Object屬性時運行時只讀屬性,保持對OLE控件的對象的引用,使用這個屬性執(zhí)行OLE控件的自動化任務(wù),以及程序化操作對象支持的屬性和方法。可以使用OLE控件的Create Link方法,先運行時從文件中創(chuàng)建一個鏈接對象,這種方法需要源文件的參數(shù),還有一個可選的源數(shù)據(jù)的參數(shù),提供可鏈接的數(shù)據(jù)。要在運行中創(chuàng)建一個嵌入的對象,可以使用Create Embed方法。這種方法有源文件和類型兩個參數(shù),但也可以不設(shè)置源文件和類型的屬性。使用Do Verb的方法。Do Verb方法的動

5、詞依照應(yīng)用程序而定,可以創(chuàng)建一個空的嵌入對象。為了把OLE控件與存儲在數(shù)據(jù)庫引擎或Access 2007數(shù)據(jù)庫中的數(shù)據(jù)綁定,需要在Data Source屬性中規(guī)定數(shù)據(jù)源,并在OLE控件的Data Field屬性中規(guī)定來自數(shù)據(jù)源的字段的名稱。6運行時允許用戶規(guī)定對象用OLE控件的Insert OBJ DLG方法顯示【插入對象】對話框,或者用Paste Special DLG方法顯示【選擇性粘貼】對話框,讓你決定什么對象進入OLE容器控件。7決定在OLE容器控件中如何顯示對象可以用OLE容器控件的Display Type屬性標(biāo)識對象是否將作為圖標(biāo)出現(xiàn),或者對象的數(shù)據(jù)是否被顯示在控件中,這個屬性還決

6、定了在運行時和設(shè)計時,顯示【插入對象】和【選擇性粘貼】對話框時,【顯示為圖標(biāo)】復(fù)選框的默認(rèn)設(shè)置。如果這個控件不是用戶界面正在使用的,可以用Size Mode屬性確定對象的圖標(biāo)或數(shù)據(jù)的圖像在OLE控件中是如何顯示的。在Size Mode設(shè)置為0或3,會剪切圖像以適合控件,但不改變圖像的實際尺寸,設(shè)置Size Mode為2,將調(diào)整控件的大小以適合圖像。8激活OLE控件中的對象在運行時,OLE控件的Do Verb方法可以激活一個對象??梢栽O(shè)置App Is Running為True,啟動ActiveX部件,從而使對象更快地激活。有些嵌入的對象可以從OLE控件內(nèi)部激活,叫做現(xiàn)場激活,因為你可以與提供對象

7、的應(yīng)用程序交互,而不切換到其它應(yīng)用程序或窗口。當(dāng)OLE控件的Auto Active屬性設(shè)置為Double-Click時,用戶可以用雙擊來激活控件。9響應(yīng)移動容器或調(diào)整容器大小OLE控件具有Object Move事件,當(dāng)移動與OLE控件相關(guān)的對象以及調(diào)整其大小時,將會觸發(fā)它。Object Move的參數(shù)代表對象容器內(nèi)對象的坐標(biāo)。如果對象移出窗體,參數(shù)的值代表與窗體左上角的相對位置。這些值可正可負(fù)。如果Active X部件的寬和高被改變,會通知OLE控件。Object Move事件是OLE控件確定對象是否已經(jīng)移動或調(diào)整大小的唯一方法。10保存和檢索嵌入的數(shù)據(jù)與嵌入的對象相關(guān)的數(shù)據(jù)不是永久保存的,含

8、有OLE控件的窗體被關(guān)閉時,與這個控件相關(guān)的數(shù)據(jù)的任何變化將丟失。要把更改的數(shù)據(jù)從對象保存到文件中,需要使用OLE控件的Save To File方法,這時對象的數(shù)據(jù)由OLE控件維護,并能用Visual Basic應(yīng)用程序保存。OLE控件中的對象只能保存于打開的二進制文件中。要想數(shù)據(jù)從對象保存到文件中,可打開二進制文件,使用Save To File方法。要想數(shù)據(jù)從文件讀入OLE容器控件,可以打開二進制文件,使用對象的Read From File方法。當(dāng)對象的內(nèi)容被改變,將調(diào)用Updated事件,這個事件用于決定對象的數(shù)據(jù)在最后一次保存時是否被更改。為此,在Updated事件中設(shè)一個全局的變量,指

9、示需要保存的對象。保存對象時,重新設(shè)置這個變量。OLE控件大大增強了Visual Basic處理數(shù)據(jù)的能力,在使用OLE容器控件時,需要創(chuàng)建、激活OLE控件的對象,最后要注意保存對象中的數(shù)據(jù)。11和OLE拖放相關(guān)的屬性、事件和方法為了判斷其它Active X控件是否支持OLE拖放,應(yīng)該在Visual Basic中加載控件,并檢查OLE Drag Mode和OLE Drop Mode屬性,或者OLE Drag方法是否存在。窗體、文檔對象、用戶控件和屬性頁都有OLE Drag Mode屬性,而且只支持手工拖放。12啟動自動OLE拖放若控件支持自動拖放,則可把它的OLE Drag Mode和OLE

10、Drop Mode屬性中至少一個設(shè)置為Automatic,從而對Visual Basic控件向外拖動數(shù)據(jù)或向內(nèi)放置數(shù)據(jù)。把文本從文本框控件拖動到Word 2007文檔時,文檔被移動到文檔。如果放文本的同時按控制鍵,則數(shù)據(jù)被復(fù)制到文檔。對所有支持OLE拖放的對象或應(yīng)用程序,這都是一個默認(rèn)屬性。要改變這種狀態(tài),需要使用手工拖放技術(shù)修改自動性能。為使文本框控件在OLE拖放操作中自動獲得數(shù)據(jù),應(yīng)把它的OLE Drop Mode屬性設(shè)置為Automatic。 運行時,除非在拖動時按下了控制鍵,否則,對于從其它應(yīng)用程序拖動到文本框控件的數(shù)據(jù),進行的是移動而不是復(fù)制操作。自動拖放操作也有其局限性,其中某些來

11、自控件功能本身。Word 2007文檔中的文本拖動到文本框控件,則Word 2007文檔里的文本格式就會消失。因為文本框控件不支持這種格式。13OLE拖放的Data Object對象在Visual Basic里,數(shù)據(jù)的媒介或存儲是Data Object對象這意味著通過它把數(shù)據(jù)從源移動到目標(biāo)。為此,Data Object對象提供了為存儲、獲取與分析數(shù)據(jù)所需的方法。把這些方法與OLE拖放事件結(jié)合使用就可以管理源端和目標(biāo)端的Data Object對象里的數(shù)據(jù)。14OLE拖放的工作原理在對Visual Basic應(yīng)用程序進行OLE拖放的操作過程中,當(dāng)你選定數(shù)據(jù)并按下鼠標(biāo)左鍵,從OLE拖動源拖動數(shù)據(jù)時,

12、觸發(fā)OLE Start Drag事件,然后就可存儲數(shù)據(jù),也可以指定源所支持的格式。還需指明,源允許復(fù)制數(shù)據(jù)還是允許移動數(shù)據(jù)。在拖動數(shù)據(jù)經(jīng)過目標(biāo)應(yīng)用程序時,觸發(fā)OLE Drag Over事件,源位于目標(biāo)應(yīng)用程序的邊界內(nèi)。在這里放下數(shù)據(jù),可以指定目標(biāo)程序要執(zhí)行的操作。在這里放下源,則目標(biāo)指定所產(chǎn)生的拖放效果,這時觸發(fā)一個OLE Give Feedback事件,向用戶提供視覺反饋,鼠標(biāo)指針發(fā)生變化,指示操作的類型。按住鼠標(biāo)左鍵時按下了上檔鍵、控制鍵或換檔鍵,或源數(shù)據(jù)在目標(biāo)應(yīng)用程序邊界內(nèi)移動時,數(shù)據(jù)可能被拒絕,而不是被復(fù)制或移動。如果移動時超出目標(biāo)應(yīng)用程序的邊界,或按取消鍵,則可能會取消或修改拖動操作

13、,鼠標(biāo)指針會變成禁止形。當(dāng)把源數(shù)據(jù)放到目標(biāo)應(yīng)用程序時把觸發(fā)目標(biāo)應(yīng)用程序的OLE Drag Drop事件,目標(biāo)應(yīng)用程序就源數(shù)據(jù)所包含的數(shù)據(jù)的格式查詢源,然后獲取數(shù)據(jù)或拒絕數(shù)據(jù)。如果在拖動開始時就已存儲數(shù)據(jù),則目標(biāo)應(yīng)用程序?qū)⑹褂肎et Data方法獲取數(shù)據(jù),如果在拖動開始時未存儲數(shù)據(jù),則通過觸發(fā)OLE Set Data事件并使用Set Data方法獲取數(shù)據(jù)。在接受數(shù)據(jù)或拒絕數(shù)據(jù)時將觸發(fā)OLE Complete Drag事件,然后源將執(zhí)行相應(yīng)操作。如果接受數(shù)據(jù)并指定一個移動,則源把刪除數(shù)據(jù)。15OLE Drag方法在選定數(shù)據(jù)后,按住鼠標(biāo)左鍵并移動鼠標(biāo)時,從對象的鼠標(biāo)移動事件調(diào)用OLE Drag方法。

14、OLE Drag方法沒有任何參數(shù),其主要目的是啟動手工拖動,然后允許OLE Start Drag事件設(shè)置拖動操作的條件。如果源控件支持OLE Drag Mode屬性,這個屬性必須設(shè)置為手工,調(diào)用OLE Drag方法。16指定拖放效果和數(shù)據(jù)格式在手工OLE拖動操作中,當(dāng)你開始拖動操作中,當(dāng)你開始拖動源并調(diào)用OLE Drag方法時,控件的OLE Start Drag事件將會發(fā)生。可以用這個事件指定拖放效果和源所支持的數(shù)據(jù)格式。OLE Start Drag事件用兩個參數(shù)指定支持的數(shù)據(jù)格式,以及放下數(shù)據(jù)時指定是復(fù)制數(shù)據(jù)還是移動數(shù)據(jù)。Allowed effects參數(shù)指定拖動源所支持的拖放效果。然后,目

15、標(biāo)可向拖動源查詢這個信息并作相應(yīng)的響應(yīng)。Allowed effects參數(shù)使用下述數(shù)值指定放下效果??梢酝ㄟ^設(shè)置OLE Start Drag事件的Format參數(shù)指定對象支持的數(shù)據(jù)格式。為此應(yīng)該使用Set Data方法。目標(biāo)可查閱源,從而可以判斷支持何種數(shù)據(jù)格式并作出相應(yīng)的響應(yīng),如果目標(biāo)不支持所放下數(shù)據(jù)的格式,它就會繼續(xù)放下數(shù)據(jù)。17把數(shù)據(jù)放到Data Object對象中在多數(shù)情況下,特別是在源支持兩種以上的格式或花費大量時間創(chuàng)建數(shù)據(jù)時,可能會希望只在目標(biāo)請求數(shù)據(jù)時,才把數(shù)據(jù)放入Data Object對象。在開始拖動操作時,可以使用OLE Start Drag事件中的Set Data方法把數(shù)據(jù)

16、放入Data Object對象。用Clear方法清除Data Object對象中的默認(rèn)數(shù)據(jù)格式,并指定所選定數(shù)據(jù)的數(shù)據(jù)格式,然后又用Set Data方法把數(shù)據(jù)放入Data Object對象。18OLE Drag Over事件狀態(tài)參數(shù)根據(jù)位置的不同,效果參數(shù)可能會相應(yīng)變化,指示當(dāng)前可接受的拖放效果。有了OLE Drag Over事件中的狀態(tài)參數(shù),就可對數(shù)據(jù)進入、經(jīng)過以及離開目標(biāo)控件等狀態(tài)作出響應(yīng)。源數(shù)據(jù)進入目標(biāo)控件時,把狀態(tài)參數(shù)設(shè)置為零,在目標(biāo)邊界內(nèi)移動拖動源時,把狀態(tài)參數(shù)設(shè)置為2。有時希望根據(jù)鼠標(biāo)指針的位置的不同改變拖動效果。每秒都會幾次生成OLE Drag Over事件,即使在鼠標(biāo)不動時也不

17、例外。19效果參數(shù)如果希望改變OLE拖放操作中默認(rèn)的鼠標(biāo)外觀,可以在目標(biāo)端操作Drag Over事件,并在源端操作OLE Give Feedback事件。在拖放操作期間,OLE拖放提供自動視覺反饋。開始拖動時,鼠標(biāo)指針會發(fā)生變化,當(dāng)經(jīng)過不支持OLE放下的對象時,鼠標(biāo)指針將變成禁止形。把鼠標(biāo)放入目標(biāo)控件時,改變鼠標(biāo)指針指出控件如何響應(yīng),首先用Get Format方法判斷Data Object對象里的數(shù)據(jù)類型,然后設(shè)置OLE Drag Over事件的效果參數(shù)以通知源,這個控件允許何種放下效果。在把目標(biāo)控件的OLE Drop Mode屬性設(shè)置為手工時,拖動數(shù)據(jù)無論何時經(jīng)過這個控件都觸發(fā)OLE Dra

18、g Over事件,如果放下了對象,則用OLE Drag Over事件的效果參數(shù)指定執(zhí)行的操作。OLE Give Feedback事件包含其自身的效果參數(shù),用這個參數(shù)向用戶提供視覺反饋,當(dāng)拖動選定時,依據(jù)這個反饋執(zhí)行操作。在拖動源數(shù)據(jù)經(jīng)過目標(biāo)并觸發(fā)OLE Drag Over事件時,源會告訴目標(biāo),它允許什么效果。此后,必須選擇唯一效果。OLE Drag Over事件的效果參數(shù)通知源,它支持哪一個放下操作,然后,源又用OLE Give Feedback事件改變鼠標(biāo)指針,以這個方式通知用戶。OLE Give Feedback事件包含兩個參數(shù),使用它們可以改變OLE拖放操作中的默認(rèn)鼠標(biāo)指針。效果參數(shù)像其

19、它OLE拖放事件一樣,指出是復(fù)制、移動還是拒絕數(shù)據(jù),但它在這個事件中,這個參數(shù)意在通過改變鼠標(biāo)指針來指出操作類型,向你提供自定義的視覺反饋。默認(rèn)光標(biāo)參數(shù)指示是否使用默認(rèn)的OLE鼠標(biāo)指針的集合,設(shè)置為False,可以用Screen對象的Mouse Pointer屬性指定自己的指針。20獲取數(shù)據(jù)把源放到目標(biāo)時會觸發(fā)OLE Drag Drop事件。在啟動拖動操作時,如果已把數(shù)據(jù)放到Data Object對象中,可以在觸發(fā)OLE Drag Drop事件時使用Get Data方法獲取數(shù)據(jù)。但是,如果啟動拖動操作時聲明了所支持的源的格式,則這個方法自動在源觸發(fā)OLE Set Data事件,這個事件把數(shù)據(jù)放到Data Object對象中,然

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論