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

下載本文檔

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

文檔簡(jiǎn)介

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

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

3、數(shù)據(jù)表或表單僅僅存儲(chǔ)源文件的位置,即一個(gè)指針,在更改源文件時(shí),被鏈接的OLE對(duì)象將被及時(shí)更新。被鏈接的 OLE對(duì)象始終保持著與源文件之間的聯(lián)系,除非人為斷開(kāi)這種聯(lián)系;嵌入操作的OLE 對(duì)象只能存儲(chǔ)在數(shù)據(jù)表或表單中。這些OLE對(duì)象不與創(chuàng)建它的源文件保持聯(lián)系。如果源文件做了更改, 它們不會(huì)自動(dòng)反映在VFP應(yīng)用程序中, 除非你再次進(jìn)行嵌入操作。 鏈接操作通常用于如下場(chǎng)合:OLE對(duì)象(數(shù)據(jù)或圖形)可能被經(jīng)常更改、應(yīng)用程序必須包含最新版本的 OLE對(duì)象、存放OLE對(duì)象的源文件可以在計(jì)算機(jī)之間或通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行更新、存放OLE 對(duì)象的源文件必須被其他應(yīng)用程序共享。嵌入操作通常用于如下場(chǎng)合:應(yīng)用程序不需要

4、具有最新版本的 OLE對(duì)象、嵌入的 OLE對(duì)象不需要被多個(gè)應(yīng)用程序使用、 源文件在被鏈接后不會(huì)被更新。要注意的是VFP本身只是一個(gè)OLE客戶機(jī),而不是一個(gè)OLE服務(wù)器。使用 OLE對(duì)象在應(yīng)用程序中使用 OLE對(duì)象首先要考慮 OLE對(duì)象的類(lèi)型, 針對(duì)不同類(lèi)型的 OLE對(duì)象,使用不同的方法來(lái)引用它們。 當(dāng)程序中要引用的可插入型 OLE對(duì)象較多時(shí)就要考慮用數(shù)據(jù)表的通用型字段來(lái)存儲(chǔ)它。1、在 VFP的數(shù)據(jù)表中添加OLE對(duì)象方法一:使用數(shù)據(jù)表設(shè)計(jì)器給數(shù)據(jù)表添加一個(gè)通用型字段,然后將可插入型OLE對(duì)象鏈接或嵌入到通用型字段的每個(gè)記錄中。通用字段包含一個(gè)10 字節(jié)的指針,它指向該字段真正的內(nèi)容,通用型字段的

5、真正類(lèi)型和數(shù)據(jù)大小取決于創(chuàng)建這些對(duì)象的 OLE服務(wù)器。這些 OLE對(duì)象是以鏈接方式還是以嵌入方式進(jìn)行操作與該應(yīng)用程序有關(guān)。若 OLE對(duì)象是以鏈接方式進(jìn)行操作的, 則數(shù)據(jù)表中只含有對(duì) OLE對(duì)象的引用, 以及創(chuàng)建這些 OLE對(duì)象的應(yīng)用程序的引用; 若 OLE對(duì)象是以嵌入方式進(jìn)行操作的, 數(shù)據(jù)表中將含有相關(guān) OLE對(duì)象的副本, 以及對(duì)創(chuàng)建這些 OLE對(duì)象的應(yīng)用程序的引用。 通用字段的大小僅受可用磁盤(pán)空間的限制。方法二:使用APPENDGENERAL命令從文件中導(dǎo)入OLE對(duì)象并將其放入通用型字段中。語(yǔ)法:APPENDGENERALGeneraLFieLdName FROMFiLeName FROMM

6、EMOPictureFieLd Name DATAcExpression LINK CLASSOLECLassName2、使用限制性可插入型OLE對(duì)象使用通用型字段中所存儲(chǔ)的限制性可插入型OLE對(duì)象需要使用OLE綁定型控件,步驟如下:( 1)在表單設(shè)計(jì)器中,將一個(gè)OLE綁定型控件添加到表單中。( 2)通過(guò)設(shè)置對(duì)象的 ControLSource 屬性指定包含 OLE對(duì)象的通用型字段。如果數(shù)據(jù)表名為 Inventory,通用型字段名為Current ,那么可以將ControLSource 屬性設(shè)置成Inventory Current 。(3)在表單上添加按鈕或菜單命令,用以瀏覽ControLSou

7、rce屬性指定的通用型字段。3、使用OLE控件(OCX文件)及非限制性可插入型OLE對(duì)象這兩類(lèi)對(duì)象需要使用OLE容器控件。 OLE容器控件允許向應(yīng)用程序中加入LE 控件( OCX文件)、非限制性可插入型OLE對(duì)象。 OLE容器控件與在于,它不與VFP 表的一個(gè)通用型字段相連接。OLE對(duì)象,包括OLE綁定型控件不同O若要在表單中添加OLE控件及非限制性可插入型OLE對(duì)象可按如下步驟進(jìn)行:( 1)在表單設(shè)計(jì)器中,向表單中添加一個(gè)OLE容器控件。( 2)在“ InsertObject ”對(duì)話框中,選擇“ CreateNew”或“ CreatefromFiLe ”或“ Inser tCon troL

8、”選項(xiàng)。( 3)從顯示的列表中選擇適當(dāng)?shù)腛LE控件或創(chuàng)建適當(dāng)類(lèi)型的對(duì)象或增加一個(gè)嵌入文件。在插入控件時(shí)如果所要的控件沒(méi)有出現(xiàn)在列表中, 可選擇 “AddControL” 按鈕將其添加到列表中。也可以通過(guò)將 OLE控件添加到表單控件工具欄中而將其添加到表單中。 在選項(xiàng)對(duì)話框中選擇控件之后,單擊表單控件工具欄上的“ViewCLass”按鈕,從子菜單中選擇“ OLEControL ”,單擊 OLE,然后拖動(dòng)控件,在表單上設(shè)置其大小。下面以一例子說(shuō)明如何在程序中使用非限制性可插入型OLE對(duì)象,本例首先將一個(gè)OLE容器控件加入表單,然后使用OLE容器控件的 OLECLass和 DocumentFiLe

9、屬性將 MicrosoftExceL作為 OLE服務(wù)器,并將一個(gè)ExceL 工作簿指定為要編輯的文件。DocumentFiLe 屬性指定了在C驅(qū)動(dòng)器中 ExceL 路徑下一個(gè)名為 BOOK1XLS的工作簿。 如果在 DocumentFiLe 屬性中指定的文件或路徑不存在,則本例程不能正常運(yùn)行,這時(shí)需要修改DocumentFiLe 來(lái)指明一個(gè)存在的路徑和工作簿文件。另外 BOOK1XLS 只能讀不能修改,下面是其VFP源代碼及其說(shuō)明。frmMyForm=CREATEOBJECT( Form)創(chuàng)建表單frmMyForm CLosabLe= F廢止控制菜單框frmMyForm AddObject (

10、 cmdCommand1, cmdMyCmdBtn)frmMyForm AddObject ( oLeObject , oLeExceLObject )frmMyForm cmdCommand1 VisibLe= TfrmMyForm oLeObject VisibLe= TfrmMyForm oLeObject Height=50frmMyForm ShowfrmMyForm oLeObject DoVerb( 1)READEVENTSDEFINECLASSoLeExceLObjectasOLEControLOLeCLass=ExceLSheetDocumentFiLe=C: EXCELBO

11、OK1XLSENDDEFINEDEFINECLASScmdMyCmdBtnASCommandButtonCaption= CanceL= TLeft=125Top=210Height=25PROCEDURECLickCLEAREVENTSENDDEFINE4、使用 OLE對(duì)象的屬性O(shè)LE對(duì)象有一系列屬性可供使用,但是對(duì)包含在OLE容器控件中的OLE對(duì)象,要確保引用的是 OLE對(duì)象的屬性而不是其容器的屬性, 這需要將容器的 Ob ject 屬性加到 OLE對(duì)象名當(dāng)中。5、使用 OLE對(duì)象的方法除了設(shè)置和讀取面的程序使用了工作簿,并使用OLE對(duì)象的屬性外, 還可以使用OLE對(duì)象的方法來(lái)操作OLE對(duì)

12、象。例如, 下ExceL 對(duì)象的 Add 方法來(lái)創(chuàng)建ExceL 工作簿,然后使用 Save 方法保存該Quit 方法結(jié)束ExceL 的本次運(yùn)行:oLeApp=CREATEOBJECT( ExceL AppLication)oLeApp VisibLe= ToLeApp Workbooks AddoLeApp CeLLs( 1,1) VaLue=7oLeApp ActiveWorkbook SaveAs( C: TEMP XLS)oLeApp Quit與使用屬性一樣,如果用容器控件創(chuàng)建對(duì)象,應(yīng)確保將“ Object ” 加到引用對(duì)象方法的控件名稱當(dāng)中。6、訪問(wèn)集合中的OLE對(duì)象一個(gè)對(duì)象類(lèi)型可以代

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

14、用 OLE對(duì)象的數(shù)組利用OLE技術(shù),不但可以將數(shù)組傳遞給OLE對(duì)象的方法,而且可以接收 OLE對(duì)象傳來(lái)的數(shù)組。 傳遞數(shù)組的方式必須是按引用傳遞,即必須在數(shù)組名前加符號(hào)(用 VFP不能將二維以上的數(shù)組傳遞到OLE對(duì)象中)。例如,要發(fā)送一個(gè)VFP數(shù)組到 ExceL中,可以使用以下程序代碼。它先在VFP中創(chuàng)建一個(gè)數(shù)組,給數(shù)組賦一些值,然后啟動(dòng)ExceL,創(chuàng)建一個(gè)工作簿, 并給工作表的第一個(gè)單元格設(shè)置一個(gè)初始值,再將此值復(fù)制到數(shù)組中的其他工作表中:其中用到了ExceL 的工作簿集( Workbooks 對(duì)象),工作表集(Sheets對(duì)象)的相關(guān)屬性及方法和ExceL 對(duì)象的 GetCustomListContents方法。下列代碼將數(shù)組傳遞給方法 FiLLAcrossSheets,以便將 Sheet1 中的第一區(qū)域內(nèi)容復(fù)制到其它工作表的相同區(qū)域。DIMENSIONaV( 2)aV( 1) Sheet1aV( 2) Sheet2oLeApp CREATEOBJECT( ExceL AppLication )oLeApp Workbooks AddoLeI oLeApp Workbooks Item ( 1)oLeI Sheets Item ( 1) CeLLs( 1, 1) VaLue 100初始值oLeI Sheets ( aV)FiLLAcrossShee

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論