天天日報丨ole對象的功能是什么_ole對象型
- 互聯網
- 2023-05-01 17:00:10
1、不知你有沒有接觸過VF編程,如果有過的話,對OLE這個東西應該不會很陌生.但不管你有沒有接觸過它,相信你看了下面的內容,會對你有所幫助的. VFP的OLE技術應用詳解 VisuaLFoxPro3.0(以下簡稱VFP)使用了OLE2.0技術,使VFP應用程序的適應能力大為加強。
2、 VFP提供兩種類型的OLE對象:一種是OLE控件(.OCX文件),這是一種自定義控件,通常在WINDOWSSYSTEM目錄下,擁有自己的事件、方法,類似于VFP的基本類,這種控件可以用VC、VB5.0、DeLphi、SDK2.0等編程工具開發。
3、VFP缺省提供了四種可供使用的OLE控件,即通信(MSCOMM32.OCX)、消息應用程序接口MAPI(MSMAPI32.OCX)、OutLine(MSOUTL32.OCX)和圖片裁剪(PICCLP32.OCX);另一種是可插入型OLE對象,這是由其他應用程序創建的,它們沒有自己的事件集合。
(相關資料圖)
4、這一種可插入型OLE對象又可分為限制性可插入型OLE對象和非限制性可插入型OLE對象。
5、 VFP提供兩種引用OLE對象的途徑都是通過VFP中的控件實現的:一種是通過OLE容器控件鏈接或嵌入對象,OLE容器控件可以引入OLE控件和非限制性可插入型OLE對象;另一種是通過OLE綁定型控件鏈接或嵌入數據表的通用類型字段中所存放的OLE對象,這通常是些限制性可插入型OLE對象。
6、 在VFP中OLE對象是通過鏈接或嵌入操作方式進行操作的。
7、鏈接和嵌入操作之間的區別在于OLE對象所存放的地點:鏈接操作中的OLE對象仍然存放在創建它的源文件中數據表或表單僅僅存儲源文件的位置,即一個指針,在更改源文件時,被鏈接的OLE對象將被及時更新。
8、被鏈接的OLE對象始終保持著與源文件之間的聯系,除非人為斷開這種聯系;嵌入操作的OLE對象只能存儲在數據表或表單中。
9、這些OLE對象不與創建它的源文件保持聯系。
10、如果源文件做了更改,它們不會自動反映在VFP應用程序中,除非你再次進行嵌入操作。
11、鏈接操作通常用于如下場合:OLE對象(數據或圖形)可能被經常更改、應用程序必須包含最新版本的OLE對象、存放OLE對象的源文件可以在計算機之間或通過計算機網絡進行更新、存放OLE對象的源文件必須被其他應用程序共享。
12、嵌入操作通常用于如下場合:應用程序不需要具有最新版本的OLE對象、嵌入的OLE對象不需要被多個應用程序使用、源文件在被鏈接后不會被更新。
13、 要注意的是VFP本身只是一個OLE客戶機,而不是一個OLE服務器。
14、 使用OLE對象 在應用程序中使用OLE對象首先要考慮OLE對象的類型,針對不同類型的OLE對象,使用不同的方法來引用它們。
15、當程序中要引用的可插入型OLE對象較多時就要考慮用數據表的通用型字段來存儲它。
16、 在VFP的數據表中添加OLE對象 方法一:使用數據表設計器給數據表添加一個通用型字段,然后將可插入型OLE對象鏈接或嵌入到通用型字段的每個記錄中。
17、通用字段包含一個10字節的指針,它指向該字段真正的內容,通用型字段的真正類型和數據大小取決于創建這些對象的OLE服務器。
18、這些OLE對象是以鏈接方式還是以嵌入方式進行操作與該應用程序有關。
19、若OLE對象是以鏈接方式進行操作的,則數據表中只含有對OLE對象的引用,以及創建這些OLE對象的應用程序的引用;若OLE對象是以嵌入方式進行操作的,數據表中將含有相關OLE對象的副本,以及對創建這些OLE對象的應用程序的引用。
20、通用字段的大小僅受可用磁盤空間的限制。
21、 方法二:使用APPENDGENERAL命令從文件中導入OLE對象并將其放入通用型字段中。
22、語法: APPENDGENERALGeneraLFieLdName 〔FROMFiLeName FROMMEMOPictureFieLd?Name〕 〔DATAcExpression〕 〔LINK〕 〔CLASSOLECLassName〕 2、使用限制性可插入型OLE對象 使用通用型字段中所存儲的限制性可插入型OLE對象需要使用OLE綁定型控件,步驟如下: (1)在表單設計器中,將一個OLE綁定型控件添加到表單中。
23、 (2)通過設置對象的ControLSource屬性指定包含OLE對象的通用型字段。
24、如果數據表名為Inventory,通用型字段名為Current,那么可以將ControL?Source屬性設置成Inventory.Current。
25、 (3)在表單上添加按鈕或菜單命令,用以瀏覽ControLSource屬性指定的通用型字段。
26、 3、使用OLE控件(.OCX文件)及非限制性可插入型OLE對象 這兩類對象需要使用OLE容器控件。
27、OLE容器控件允許向應用程序中加入OLE對象,包括OLE控件(.OCX文件)、非限制性可插入型OLE對象。
28、OLE容器控件與OLE綁定型控件不同在于,它不與VFP表的一個通用型字段相連接。
29、 若要在表單中添加OLE控件及非限制性可插入型OLE對象可按如下步驟進行: (1)在表單設計器中,向表單中添加一個OLE容器控件。
30、 (2)在“InsertObject”對話框中,選擇“CreateNew”或“CreatefromFiLe”或“InsertControL”選項。
31、 (3)從顯示的列表中選擇適當的OLE控件或創建適當類型的對象或增加一個嵌入文件。
32、 在插入控件時如果所要的控件沒有出現在列表中,可選擇“AddControL”按鈕將其添加到列表中。
33、也可以通過將OLE控件添加到表單控件工具欄中而將其添加到表單中。
34、在選項對話框中選擇控件之后,單擊表單控件工具欄上的“ViewCLass”按鈕,從子菜單中選擇“OLEControL”,單擊OLE,然后拖動控件,在表單上設置其大小。
35、下面以一例子說明如何在程序中使用非限制性可插入型OLE對象,本例首先將一個OLE容器控件加入表單,然后使用OLE容器控件的OLECLass和DocumentFiLe屬性將MicrosoftExceL作為OLE服務器,并將一個ExceL工作簿指定為要編輯的文件。
36、DocumentFiLe屬性指定了在C驅動器中ExceL路徑下一個名為BOOK1.XLS的工作簿。
37、如果在DocumentFiLe屬性中指定的文件或路徑不存在,則本例程不能正常運行,這時需要修改DocumentFiLe來指明一個存在的路徑和工作簿文件。
38、另外BOOK1.XLS只能讀不能修改,下面是其VFP源代碼及其說明。
39、 frmMyForm=CREATEOBJECT(′Form′)&&創建表單 frmMyForm.CLosabLe=.F.&&廢止控制菜單框 frmMyForm.AddObject(′cmdCommand1′,′cmdMyCmdBtn′) frmMyForm.AddObject(〃oLeObject〃,〃oLeEx?ceLObject〃) frmMyForm.cmdCommand1.VisibLe=.T. frmMyForm.oLeObject.VisibLe=.T. frmMyForm.oLeObject.Height=50 frmMyForm.Show frmMyForm.oLeObject.DoVerb(-1) READEVENTS DEFINECLASSoLeExceLObjectasOLEControL OLeCLass=〃ExceL.Sheet〃 DocumentFiLe=〃C:EXCELBOOK1.XLS〃 ENDDEFINE DEFINECLASScmdMyCmdBtnASCommand?Button Caption=′ CanceL=.T. Left=125 Top=210 Height=25 PROCEDURECLick CLEAREVENTS ENDDEFINE 4、使用OLE對象的屬性 OLE對象有一系列屬性可供使用,但是對包含在OLE容器控件中的OLE對象,要確保引用的是OLE對象的屬性而不是其容器的屬性,這需要將容器的Ob?ject屬性加到OLE對象名當中。
40、 5、使用OLE對象的方法 除了設置和讀取OLE對象的屬性外,還可以使用OLE對象的方法來操作OLE對象。
41、例如,下面的程序使用了Ex?ceL對象的Add方法來創建ExceL工作簿,然后使用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”加到引用對象方法的控件名稱當中。
42、 6、訪問集合中的OLE對象 一個對象類型可以代表單個對象或若干相關對象的集合。
43、 在程序中,集合是一個未經排序的鏈表結構,每當有對象被添加到集合中或從集合中移去時,其余對象的位置都可能改變。
44、使用集合的Count屬性對集合遍歷,可以訪問集合中的所有對象。
45、Count屬性可用來返回集合中項的數目。
46、另外,可以使用Item方法返回集合中的某一項。
47、 也可以訪問集合內的集合。
48、例如,使用下列程序代碼可以在一個單元格區域內訪問某一單元格集合: oLeApp=CREATEOBJECT(”ExceL.sheet”) oLeApp.Range(oLeApp.CeLLs(1,1),oLeApp.CeLLs(10,10)).VaLue=100 7、使用OLE對象的數組利用OLE技術,不但可以將數組傳遞給OLE對象的方法,而且可以接收OLE對象傳來的數組。
49、傳遞數組的方式必須是按引用傳遞,即必須在數組名前加@符號(用VFP不能將二維以上的數組傳遞到OLE對象中)。
50、例如,要發送一個VFP數組到ExceL中,可以使用以下程序代碼。
51、它先在VFP中創建一個數組,給數組賦一些值,然后啟動ExceL,創建一個工作簿,并給工作表的第一個單元格設置一個初始值,再將此值復制到數組中的其他工作表中:其中用到了ExceL的工作簿集(Workbooks對象),工作表集(Sheets對象)的相關屬性及方法和ExceL對象的GetCustomListContents方法。
52、下列代碼將數組傳遞給方法FiLLAcrossSheets,以便將Sheet1中的第一區域內容復制到其它工作表的相同區域。
53、 DIMENSIONaV(2) aV(1)=〃Sheet1〃 aV(2)=〃Sheet2〃 oLeApp=CREATEOBJECT(〃Ex?ceL.AppLication〃) oLeApp.Workbooks.Add oLeI=oLeApp.Workbooks.Item(1) oLeI.Sheets.Item(1).CeLLs(1,1).VaLue=100&&初始值 oLeI.Sheets(@aV).FiLLAcrossSheets(oLeI.Worksheets(〃Sheet1〃).CeLLs(1,1)) oLeApp.VisibLe=.T. 下列代碼將一個數組返回到VFP,并顯示數組的內容: oLeApp=CREATEOBJECT(〃Ex?ceL.AppLication〃) aOLeArray=oLeApp.GetCustomListContents(1)&&改變數組下標可以顯示其它內容 FORnIndex=1toALEN(aOLeArray) ?aOLeArray(nIndex) ENDFOR。
本文就為大家分享到這里,希望小伙伴們會喜歡。
關鍵詞:
- 天天日報丨ole對象的功能是什么_ole對象型2023-05-01
- 今日熱文:好抓馬!洪欣凌晨發微博官宣離婚2023-05-01
- “大慶農田冒石油”視頻發布者承認造假,警2023-05-01
- 物流保通保暢 郵政快遞累計攬投總量約50.62023-05-01
- 廣州圣心大教堂文保碑破碎墜地,文旅局:將2023-05-01
- 天天簡訊:萬人說新疆丨小小畫家2023-05-01
- 天天快看:千城勝景|新疆喀什古城:歌舞醉2023-05-01
- 港澳成為旅游熱門地 港珠澳大橋口岸出入境2023-05-01
- 全球連線 | “五一”小長假 內地游客2023-05-01
- 江山壯麗 我說長城丨新疆這座古老烽燧何以2023-05-01
- 天天精選!紫藤花香撲面來2023-05-01
- 時刻守護在旁!小男孩挖蛤蜊和奶奶走散后求2023-05-01
- “五一”假期,那些堅守崗位的勞動者-天天2023-05-01
- 燃!機甲大師高校聯盟賽在渝開戰_全球信息2023-05-01
- vivo X Fold2及X Flip火熱大賣!首銷輕2023-05-01
- 萬花筒制作_制作步驟詳解 世界視點2023-05-01
- 張樹鵬成功翼裝飛行穿越天門洞|天天快資訊2023-05-01
- 5月1日全國鐵路預計發送旅客1600萬人次 焦2023-05-01
- 氣溫驟降超10℃!新一輪冷空氣來襲!這些地2023-05-01
- 大熊貓“最強周邊”,又又又又來了!2023-05-01
- 東京大學發布消息:馬云成為東京學院客座教2023-05-01
- 每日短訊:4月份中國制造業PMI為49.2% 向2023-05-01
- 全球連線丨(外國人看中國基建)了不起的中2023-05-01
- 全球連線|逆行守護 命運與共——中國軍隊2023-05-01
- 報道:“五一”假期旅游火爆,中國經濟復蘇2023-05-01
- 治安巡邏、反詐宣傳走進五四廣場!市南公安2023-05-01
- 云南大理:洱海上空現“棉花糖云”2023-05-01
- 快訊:歐洲旅游業熱盼中國出境游紅利2023-05-01
- 【當前獨家】(踔厲奮發·奔向美好生活)中2023-05-01
- 民航局:今天預計保障航班15415班 運輸旅2023-05-01