VFP的OLE技術應用知識_第1頁
VFP的OLE技術應用知識_第2頁
VFP的OLE技術應用知識_第3頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、VFP 的 OLE 技術應用知識VFP 的 OLE 技術應用知識VFP用了 OLE2.0技術 , 使 VFP應用程序的適應能力大為加強。VFP 提供兩種類型的OLE對象 : 一種是 OLE控件 (.OCX 文件 ), 這是一種自定義控件 , 通常在 WINDOWSSYSTEM目錄下 , 擁有自己的事件、方法, 類似于 VFP的基本類 , 這種控件可以用 VC、VB5.0、DeLphi、SDK2.0等編程工具開發。VFP 缺省提供了四種可供使用的OLE 控件 , 即通信(MSCOMM32.OCX)、消息應用程序接口MAPI(MSMAPI32.OCX)、OutLine(MSOUTL32.OCX)和

2、圖片裁剪 (PICCLP32.OCX);另一種是可插入型OLE對象 ,這是由其他應用程序創建的, 它們沒有自己的事件集合。這一種可插入型 OLE對象又可分為限制性可插入型OLE對象和非限制性可插入型OLE對象。VFP 提供兩種引用 OLE對象的途徑都是通過 VFP的控件實現的 : 一種是通過 OLE容器控件鏈接或嵌入對象 ,OLE 容器控件可以引入 OLE控件和非限制性可插入型 OLE對象 ; 另一種是通過 OLE綁定型控件鏈接或嵌入數據表的通用類型字段所存放的OLE對象 , 這通常是些限制性可插入型 OLE對象。在 VFPOLE對象是通過鏈接或嵌入操作方式進行操作的。鏈接和嵌入操作之間的區別

3、在于 OLE對象所存放的地點 : 鏈接操作的 OLE對象仍然存放在創建它的源文件數據表或表單僅僅存儲源文件的位置 , 即一個指針 , 在更改源文件時 , 被鏈接的 OLE對象將被及時更新。被鏈接的 OLE1 / 9VFP 的 OLE 技術應用知識對象始終保持著與源文件之間的聯系, 除非人為斷開這種聯系; 嵌入操作的 O LE 對象只能存儲在數據表或表單。這些OLE對象不與創建它的源文件保持聯系。如果源文件做了更改 , 它們不會自動反映在VFP 應用程序 , 除非你再次進行嵌入操作。鏈接操作通常用于如下場合:OLE 對象( 數據或圖形 ) 可能被經常更改、應用程序必須包含最新版本的OLE 對象、

4、存放 OLE 對象的源文件可以在計算機之間或通過計算機網絡進行更新、存放 O LE 對象的源文件必須被其他應用程序共享。嵌入操作通常用于如下場合 : 應用程序不需要具有最新版本的 OLE 對象、嵌入的OLE對象不需要被多個應用程序使用、源文件在被鏈接后不會被更新。要注意的是VFP 本身只是一個OLE 客戶機 , 而不是一個OLE 服務器。使用 OLE對象在應用程序使用 OLE對象首先要考慮 OLE對象的類型 , 針對不同類型的 OLE對象 , 使用不同的方法來引用它們。當程序要引用的可插入型OLE對象較多時就要考慮用數據表的通用型字段來存儲它。1、在 VFP 的數據表添加OLE對象方法一 :

5、使用數據表設計器給數據表添加一個通用型字段, 然后將可插入型OLE對象鏈接或嵌入到通用型字段的每個記錄。通用字段包含一個1 0 字節的指針 , 它指向該字段真正的內容 , 通用型字段的真正類型和數據大小取決于創建這些對象的2 / 9VFP 的 OLE 技術應用知識OLE服務器。這些OLE對象是以鏈接方式還是以嵌入方式進行操作與該應用程序有關。若 OLE對象是以鏈接方式進行操作的 , 則數據表只含有對 OLE 對象的引用 , 以及創建這些 OLE對象的應用程序的引用 ; 若 OLE 對象是以嵌入方式進行操作的, 數據表將含有相關OLE 對象的副本 , 以及對創建這些OLE 對象的應用程序的引用。

6、通用字段的大小僅受可用磁盤空間的限制。方法二 : 使用 APPENDGENERAL命令從文件導入OLE對象并將其放入通用型字段。語法 :APPENDGENERALGeneraLFieLdName FROMFiLeName FROMMEMOPictureFieLd Name DATAcExpressionLINKCLASSOLECLassName2、使用限制性可插入型OLE對象使用通用型字段所存儲的限制性可插入型OLE 對象需要使用OLE綁定型控件 , 步驟如下 :(1) 在表單設計器 , 將一個 OLE綁定型控件添加到表單。3 / 9VFP 的 OLE 技術應用知識(2) 通過設置對象的 Co

7、ntroLSource 屬性指定包含 OLE對象的通用型字段。如果數據表名為 Inventory, 通用型字段名為 Current, 那么可以將 ControL Source屬性設置成 Inven tory.Current。(3) 在表單上添加按鈕或菜單命令 , 用以瀏覽 ControLSource 屬性指定的通用型字段。3、使用 OLE控件 (.OCX 文件 ) 及非限制性可插入型OLE對象這兩類對象需要使用OLE容器控件。 OLE容器控件允許向應用程序加入 OLE對象 , 包括 O LE 控件 (.OCX 文件 ) 、非限制性可插入型 OLE對象。 OLE容器控件與 OLE綁定型控件不同在

8、于 , 它不與 VFP 表的一個通用型字段相連接。若要在表單添加OLE 控件及非限制性可插入型OLE對象可按如下步驟進行 :(1) 在表單設計器 , 向表單添加一個 OLE容器控件。(2) 在 “InsertObject ” 對 話 框 , 選 擇 “CreateNew” 或 “CreatefromFiLe ”或“ Inser tCon troL ”選項。(3) 從顯示的列表選擇適當的 OLE控件或創建適當類型的對象或增加一個嵌入文件。在插入控件時如果所要的控件沒有出現在列表, 可選擇“AddControL”按鈕將其添加到列表。也可以通過將OLE 控件添加到表單控件工具欄而將其添加到表單。在選

9、項對話框4 / 9VFP 的 OLE 技術應用知識選擇控件之后 , 單擊表單控件工具欄上的“ViewCLass”按鈕 , 從子菜單選擇“ OLECon troL”, 單擊 OLE,然后拖動控件 , 在表單上設置其大小。下面以一例子說明如何在程序使用非限制性可插入型OLE對象 , 本例首先將一個OLE 容器控件加入表單, 然后使用OLE 容器控件的OLECLass和 DocumentFiLe 屬性將 MicrosoftExceL作為 OLE服務器 , 并將一個 ExceL 工作簿指定為要編輯的文件。DocumentFiLe 屬性指定了在 C 驅動器ExceL 路徑下一個名為BOOK1.XLS的工

10、作簿。如果在DocumentFiLe 屬性指定的文件或路徑不存在, 則本例程不能正常運行,這時需要修改DocumentFiLe 來指明一個存在的路徑和工作簿文件。另外 BOOK1.XLS只能讀不能修改 , 下面是其 VFP源代碼及其說明。frmMyForm=CREATEOBJECT(Form)&&創建表單frmMyForm.CLosabLe=.F.&&廢止控制菜單框frmMyForm.AddObject( cmdCommand1, cmdMyCmdBtn)frmMyForm.AddObject( oLeObject , oLeEx ceLObject )frmM

11、yForm.cmdCommand1.VisibLe=.T.frmMyForm.oLeObject.VisibLe=.T.frmMyForm.oLeObject.Height=50frmMyForm.ShowfrmMyForm.oLeObject.DoVerb(-1)READEVENTS5 / 9VFP 的 OLE 技術應用知識DEFINECLASSoLeExceLObjectasOLEControLOLeCLass=ExceL.Sheet DocumentFiLe=C:BOOK1.XLSENDDEFINEDEFINECLASScmdMyCmdBtnASCommand ButtonCaption

12、= CanceL=.T.Left=125Top=210Height=25PROCEDURECLickCLEAREVENTSENDDEFINE4、使用 OLE對象的屬性OLE 對象有一系列屬性可供使用, 但是對包含在OLE 容器控件的OLE對象 , 要確保引用的是OLE對象的屬性而不是其容器的屬性, 這需要將容器的 Ob ject屬性加到 OLE對象名當。5、使用 OLE對象的方法除了設置和讀取OLE對象的屬性外 , 還可以使用 OLE對象的方法來操作 OLE對象。例如 , 下面的程序使用了Ex ceL 對象的 Add 方法來創6 / 9VFP 的 OLE 技術應用知識建 ExceL 工作簿 ,

13、 然后使用 Save 方法保存該工作簿 , 并使用 Quit 方法結束 ExceL 的本次運行 :oLeApp=CREATEOBJECT("Ex ceL.AppLication") oLeApp.VisibLe=.T. oLeApp.Workbooks.Add oLeApp.CeLLs(1,1).VaLue=7 oLeApp.ActiveWorkbook.SaveAs("C:TEMP.XLS") oLeApp.Quit與使用屬性一樣 , 如果用容器控件創建對象 , 應確保將“ Object ”加到引用對象方法的控件名稱當。6、訪問集合的 OLE對象一個對

14、象類型可以代表單個對象或若干相關對象的集合。在程序 , 集合是一個未經排序的鏈表結構 , 每當有對象被添加到集合或從集合移去時 , 其余對象的位置都可能改變。使用集合的 Count 屬性對集合遍歷 , 可以訪問集合的所有對象。 Count 屬性可用來返回集合項的數目。另外 , 可以使用 Item 方法返回集合的某一項。也可以訪問集合內的集合。例如, 使用下列程序代碼可以在一個單元格區域內訪問某一單元格集合:oLeApp=CREATEOBJECT("ExceL.sheet")7 / 9VFP 的 OLE 技術應用知識oLeApp.Range(oLeApp.CeLLs(1,1)

15、,oLeApp.CeLLs(10,10).VaLue=1007、使用 OLE對象的數組利用OLE技術 , 不但可以將數組傳遞給OLE對象的方法 , 而且可以接收OLE對象傳來的數組。傳遞數組的方式必須是按引用傳遞 , 即必須在數組名前加 符號 ( 用 VFP 不能將二維以上的數組傳遞到 OLE對象 ) 。例如 , 要發送一個 VFP數組到 ExceL , 可以使用以下程序代碼。它先在VFP創建一個數組 , 給數組賦一些值 , 然后啟動 ExceL, 創建一個工作簿 , 并給工作表的第一個單元格設置一個初始值, 再將此值復制到數組的其他工作表: 其用到了ExceL 的工作簿集 (Workbook

16、s對象 ), 工作表集 (Sheets對象 ) 的相關屬性及方法和ExceL 對象的 GetCustomListContents方法。下列代碼將數組傳遞給方法FiLLAcrossSheets, 以便將Sheet1的第一區域內容復制到其它工作表的相同區域。DIMENSIONaV(2)aV(1)= Sheet1aV(2)= Sheet2oLeApp=CREATEOBJECT(Ex ceL.AppLication)oLeApp.Workbooks.AddoLeI=oLeApp.Workbooks.Item(1)oLeI.Sheets.Item(1).CeLLs(1,1).VaLue=100&&初始值8 / 9VFP 的 OLE 技術應用知識oLeI.Sheets(aV).Fi

溫馨提示

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

最新文檔

評論

0/150

提交評論