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

提交评论