OLE(對象連接與嵌入)
OLE OLEOLE概述? OLE控件通常用來創建以文檔處理為中心的應用程 序,在這種應用程序中,你把不同應用程序的數據 組合起來,創建單個文檔。這種類型的應用程序可 能是字處理器,允許用戶輸入文本之后再嵌入一個 工作表或圖表。鏈接的對象? 鏈接一個對象時,實際上是在應 用程序中插入鏈接對象的占位符。 例如,當把電子表格單元的范圍 與Visual Basic應用程序鏈接時,與 這個單元相關的數據是存儲在另 一文件中的;在OLE控件中,只 存儲數據的鏈接和代表數據鏈接 的圖像。運行時,可以激活鏈接 對象,電子表格應用程序便自動 啟動,然后你可以使用電子表格 應用程序來編輯那些電子表格單 元。當編輯一個鏈接對象時,編 輯操作是在OLE控件外的單獨窗 口中完成的。? 當對象與Visual Basic應用程序鏈接 時,可以從數據鏈接的應用程序 中查看對象的當前數據。數據只 存在于提供對象的應用程序。嵌入的對象? 使用OLE控件,或把一個對象的類加入工具箱,可以創 建嵌入對象。使用嵌入的對象,與對象相關的全部數據 都將被復制和納入OLE控件,把控件的內容存入文件時, 這個文件含有創建對象的應用程序名稱,對象數據和對 象的源文件包含的圖像。由于這個原因,嵌入對象可能 會大大增加文件的大小。? 與鏈接對象不同,其它應用程序不能訪問嵌入對象中的 數據。當想要應用程序保持在另一應用程序中創建和編 輯的數據時,嵌入是有效的手段。對于嵌入的對象,當 你激活對象時,創建這個對象的Active X部件被容器應 用程序調用,這個對象的數據被打開和編輯。另外,還 在容器應用程序中顯示創建這個對象的應用程序的用戶 界面和功能區,使用戶能現場控制對象。設計時用OLE控件插入對象? 把OLE控件拖到窗體上,彈出【插入對象】對話框, 單擊【從文件中創建】單選框,單擊【瀏覽】按鈕, 彈出【瀏覽】對話框,選擇想要插入的文件,單擊 【插入】按鈕,返回【插入對象】對話框,在【插 入對象】對話框中,單擊【確定】按鈕,創建嵌入 對象。? 嵌入對象的數據是有可能被更改的。如果讓用戶輸 入的更改在下次應用程序運行時出現,就必須使用 Save To File方法來保存數據。運行時用OLE控件創建對象? 要在運行時創建鏈接和嵌入對象,需要在代碼中使用OLE控件的方法和屬 性。? 通過使用OLE對象的Object屬性,可以使用鏈接或嵌入對象的屬性和方法。 Object屬性時運行時只讀屬性,保持對OLE控件的對象的引用,使用這個 屬性執行OLE控件的自動化任務,以及程序化操作對象支持的屬性和方法。? 可以使用OLE控件的Create Link方法,先運行時從文件中創建一個鏈接對象, 這種方法需要源文件的參數,還有一個可選的源數據的參數,提供可鏈接 的數據。? 要在運行中創建一個嵌入的對象,可以使用Create Embed方法。這種方法 有源文件和類型兩個參數,但也可以不設置源文件和類型的屬性。? 使用Do Verb的方法。Do Verb方法的動詞依照應用程序而定,可以創建一個 空的嵌入對象。? 為了把OLE控件與存儲在數據庫引擎或Access 2007數據庫中的數據綁定, 需要在Data Source屬性中規定數據源,并在OLE控件的Data Field屬性中規定 來自數據源的字段的名稱。運行時允許用戶規定對象? 用OLE控件的Insert OBJ DLG方法顯示【插入對象】 對話框,或者用Paste Special DLG方法顯示【選擇性 粘貼】對話框,讓你決定什么對象進入OLE容器控 件。決定在OLE容器控件中如何顯示對象? 可以用OLE容器控件的Display Type屬性標識對象是 否將作為圖標出現,或者對象的數據是否被顯示在 控件中,這個屬性還決定了在運行時和設計時,顯 示【插入對象】和【選擇性粘貼】對話框時,【顯 示為圖標】復選框的默認設置。? 如果這個控件不是用戶界面正在使用的,可以用 Size Mode屬性確定對象的圖標或數據的圖像在OLE 控件中是如何顯示的。在Size Mode設置為0或3,會 剪切圖像以適合控件,但不改變圖像的實際尺寸, 設置Size Mode為2,將調整控件的大小以適合圖像。激活OLE控件中的對象? 在運行時,OLE控件的Do Verb方法可以激活一個對 象。可以設置App Is Running為True,啟動ActiveX部 件,從而使對象更快地激活。? 有些嵌入的對象可以從OLE控件內部激活,叫做現 場激活,因為你可以與提供對象的應用程序交互, 而不切換到其它應用程序或窗口。當OLE控件的 Auto Active屬性設置為Double-Click時,用戶可以用雙 擊來激活控件。響應移動容器或調整容器大小? OLE控件具有Object Move事件,當移動與OLE控件 相關的對象以及調整其大小時,將會觸發它。 Object Move的參數代表對象容器內對象的坐標。如 果對象移出窗體,參數的值代表與窗體左上角的相 對位置。這些值可正可負。如果Active X部件的寬和 高被改變,會通知OLE控件。Object Move事件是 OLE控件確定對象是否已經移動或調整大小的唯一 方法。保存和檢索嵌入的數據? 與嵌入的對象相關的數據不是永久保存的,含有OLE控件的窗體被 關閉時,與這個控件相關的數據的任何變化將丟失。要把更改的 數據從對象保存到文件中,需要使用OLE控件的Save To File方法, 這時對象的數據由OLE控件維護,并能用Visual Basic應用程序保存。 OLE控件中的對象只能保存于打開的二進制文件中。? 要想數據從對象保存到文件中,可打開二進制文件,使用Save To File方法。? 要想數據從文件讀入OLE容器控件,可以打開二進制文件,使用對 象的Read From File方法。? 當對象的內容被改變,將調用Updated事件,這個事件用于決定對 象的數據在最后一次保存時是否被更改。為此,在Updated事件中 設一個全局的變量,指示需要保存的對象。保存對象時,重新設 置這個變量。? OLE控件大大增強了Visual Basic處理數據的能力,在使用OLE容器控 件時,需要創建、激活OLE控件的對象,最后要注意保存對象中的 數據。和OLE拖放相關的屬性、事件和方法? 為了判斷其它Active X控件是否支持OLE拖放,應該 在Visual Basic中加載控件,并檢查OLE Drag Mode和 OLE Drop Mode屬性,或者OLE Drag方法是否存在。 窗體、文檔對象、用戶控件和屬性頁都有OLE Drag Mode屬性,而且只支持手工拖放。啟動自動OLE拖放? 若控件支持自動拖放,則可把它的OLE Drag Mode和OLE Drop Mode屬性中至少一個設置為Automatic,從而對Visual Basic控件 向外拖動數據或向內放置數據。? 把文本從文本框控件拖動到Word 2007文檔時,文檔被移動到 文檔。如果放文本的同時按控制鍵,則數據被復制到文檔。 對所有支持OLE拖放的對象或應用程序,這都是一個默認屬 性。要改變這種狀態,需要使用手工拖放技術修改自動性能。? 為使文本框控件在OLE拖放操作中自動獲得數據,應把它的 OLE Drop Mode屬性設置為Automatic。 運行時,除非在拖動時 按下了控制鍵,否則,對于從其它應用程序拖動到文本框控 件的數據,進行的是移動而不是復制操作。? 自動拖放操作也有其局限性,其中某些來自控件功能本身。 Word 2007文檔中的文本拖動到文本框控件,則Word 2007文 檔里的文本格式就會消失。因為文本框控件不支持這種格式。OLE拖放的Data Object對象? 在Visual Basic里,數據的媒介或存儲是Data Object對 象——這意味著通過它把數據從源移動到目標。為 此,Data Object對象提供了為存儲、獲取與分析數 據所需的方法。? 把這些方法與OLE拖放事件結合使用就可以管理源 端和目標端的Data Object對象里的數據。OLE拖放的工作原理? 在對Visual Basic應用程序進行OLE拖放的操作過程中,當你選定數據并按下鼠標左鍵, 從OLE拖動源拖動數據時,觸發OLE Start Drag事件,然后就可存儲數據,也可以指 定源所支持的格式。還需指明,源允許復制數據還是允許移動數據。? 在拖動數據經過目標應用程序時,觸發OLE Drag Over事件,源位于目標應用程序的 邊界內。在這里放下數據,可以指定目標程序要執行的操作。? 在這里放下源,則目標指定所產生的拖放效果,這時觸發一個OLE Give Feedback事 件,向用戶提供視覺反饋,鼠標指針發生變化,指示操作的類型。? 按住鼠標左鍵時按下了上檔鍵、控制鍵或換檔鍵,或源數據在目標應用程序邊界內 移動時,數據可能被拒絕,而不是被復制或移動。如果移動時超出目標應用程序的 邊界,或按取消鍵,則可能會取消或修改拖動操作,鼠標指針會變成禁止形。? 當把源數據放到目標應用程序時把觸發目標應用程序的OLE Drag Drop事件,目標應 用程序就源數據所包含的數據的格式查詢源,然后獲取數據或拒絕數據。? 如果在拖動開始時就已存儲數據,則目標應用程序將使用Get Data方法獲取數據, 如果在拖動開始時未存儲數據,則通過觸發OLE Set Data事件并使用Set Data方法獲取 數據。? 在接受數據或拒絕數據時將觸發OLE Complete Drag事件,然后源將執行相應操作。 如果接受數據并指定一個移動,則源把刪除數據。OLE Drag方法? 在選定數據后,按住鼠標左鍵并移動鼠標時,從對 象的鼠標移動事件調用OLE Drag方法。? OLE Drag方法沒有任何參數,其主要目的是啟動手 工拖動,然后允許OLE Start Drag事件設置拖動操作 的條件。? 如果源控件支持OLE Drag Mode屬性,這個屬性必須 設置為手工,調用OLE Drag方法。指定拖放效果和數據格式? 在手工OLE拖動操作中,當你開始拖動操作中,當你開 始拖動源并調用OLE Drag方法時,控件的OLE Start Drag 事件將會發生。可以用這個事件指定拖放效果和源所支 持的數據格式。OLE Start Drag事件用兩個參數指定支持 的數據格式,以及放下數據時指定是復制數據還是移動 數據。? Allowed effects參數指定拖動源所支持的拖放效果。然后, 目標可向拖動源查詢這個信息并作相應的響應。Allowed effects參數使用下述數值指定放下效果。? 可以通過設置OLE Start Drag事件的Format參數指定對象 支持的數據格式。為此應該使用Set Data方法。? 目標可查閱源,從而可以判斷支持何種數據格式并作出 相應的響應,如果目標不支持所放下數據的格式,它就 會繼續放下數據。把數據放到Data
|
- 關 鍵 詞:
- OLE(對象連接與嵌入) ppt、pptx格式 免費閱讀 下載 天天文庫

關于本文