VFP的OLE技術(shù)應(yīng)用知識(shí)_第1頁
VFP的OLE技術(shù)應(yīng)用知識(shí)_第2頁
VFP的OLE技術(shù)應(yīng)用知識(shí)_第3頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

10、作簿。如果在DocumentFiLe 屬性指定的文件或路徑不存在, 則本例程不能正常運(yùn)行,這時(shí)需要修改DocumentFiLe 來指明一個(gè)存在的路徑和工作簿文件。另外 BOOK1.XLS只能讀不能修改 , 下面是其 VFP源代碼及其說明。frmMyForm=CREATEOBJECT(Form)&&創(chuàng)建表單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 技術(shù)應(yīng)用知識(shí)DEFINECLASSoLeExceLObjectasOLEControLOLeCLass=ExceL.Sheet DocumentFiLe=C:BOOK1.XLSENDDEFINEDEFINECLASScmdMyCmdBtnASCommand ButtonCaption

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

13、 然后使用 Save 方法保存該工作簿 , 并使用 Quit 方法結(jié)束 ExceL 的本次運(yùn)行 :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與使用屬性一樣 , 如果用容器控件創(chuàng)建對象 , 應(yīng)確保將“ Object ”加到引用對象方法的控件名稱當(dāng)。6、訪問集合的 OLE對象一個(gè)對

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

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

16、s對象 ), 工作表集 (Sheets對象 ) 的相關(guān)屬性及方法和ExceL 對象的 GetCustomListContents方法。下列代碼將數(shù)組傳遞給方法FiLLAcrossSheets, 以便將Sheet1的第一區(qū)域內(nèi)容復(fù)制到其它工作表的相同區(qū)域。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 技術(shù)應(yīng)用知識(shí)oLeI.Sheets(aV).Fi

溫馨提示

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

最新文檔

評論

0/150

提交評論