8.1 OLE 簡介
8.1.1 OLE 1.0 與 2.0
- OLE 1.0:服務端前台打開獨立窗體獲取焦點,OLE 窗體失焦,存在於單獨窗體
- OLE 2.0:本地激活——服務端菜單與應用程序融合,狀態條/工具條替換,對象在應用程序窗體中編輯,進程由服務端處理
- 服務端決定激活方式。OLE 1.0 對象在 OLE 2.0 應用中仍按 1.0 方式激活
8.1.2 鏈接與嵌入
| 鏈接對象 | 嵌入對象 |
| 數據保存在服務端創建的文件中 | 數據保存在 OLE 應用程序中 |
| 必須以文件形式保存,僅能鏈接已創建對象 | 無需文件,所有數據在應用程序中 |
| 文件可被多程序訪問/修改,變化自動反映到所有鏈接處 | 僅應用程序中激活可編輯,確保不被意外刪除/修改 |
| 應用程序可獲取文件最新數據 | 應用程序體積因保存數據而增大 |
| 可存入文件保存修改(詳 8.3.6) | |
選擇原則
| 何時使用鏈接 | 何時使用嵌入 |
| 需修改源對象並反映到所有鏈接程序/文本 | 修改源對象並反映在特定程序/文本 |
| 源對象被多程序頻繁修改 | 源對象不被程序頻繁修改 |
| 源文件不常移動/刪除 | 源文件可能頻繁移動/刪除 |
| 對象大,通過網絡/郵件分發 | 對象小,或大但無法網絡/郵件分發 |
8.1.3 設計/運行狀態創建 OLE 對象差異
| 設計狀態 | 運行狀態 |
| 對象保存在執行文件中,增加編譯體積 | 對象保存在文件或僅運行時存在,減小編譯體積 |
| 開發者需設計時訪問服務端 | 無需設計時訪問服務端 |
| 運行時對象已創建,減少運行時間 | 運行時創建對象,增加運行時間 |
| 設計/運行時均可編輯 | 僅運行時可編輯 |
| 對象數量設計時固定 | 可動態創建新對象 |
設計狀態服務端不能本地激活,僅在自身窗體內激活;運行狀態若服務端支持則可本地激活。
8.1.4 OLE 類、文件、項目
- OLE 類:決定創建對象的服務端及數據類型。多類型對象需定義多類(如同時鏈接/嵌入公式、圖片)
- OLE 文件:包含對象數據的源文件。鏈接對象必須定義(數據在文件中)。從現有文件創建嵌入對象也需定義。例:
D:\OFFICE\QPW\TUTOR.WBI。僅鏈接對象定義,嵌入對象只需定義類
- OLE 項目:文件中代表鏈接/嵌入數據的部分。需對象包含比文件小的數據塊時使用。例:Quattro Pro 筆記本
$GasCosts;$B$4.$B$5 表示 B4:B5 範圍