版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.VFP的OLE技术应用详解出处:网络- VFP用了OLE20技术,使VFP应用程序的适应能力大为加强。VFP提供两种类型的OLE对象:一种是OLE控件(OCX文件),这是一种自定义控件,通常在WINDOWSSYSTEM目录下,拥有自己的事件、方法,类似于VFP的基本类,这种控件可以用VC、VB50、DeLphi、SDK20等编程工具开发。VFP缺省提供了四种可供使用的OLE控件,即通信(MSCOMM32OCX)、消息应用程序接口MAPI(MSMAPI32OCX)、OutLine(MSOUTL32OCX)和图片裁剪(PICCLP32OCX);另一种是可插入型OLE对象,这是由其他应用程序创建的
2、,它们没有自己的事件集合。这一种可插入型OLE对象又可分为限制性可插入型OLE对象和非限制性可插入型OLE对象。VFP提供两种引用OLE对象的途径都是通过VFP中的控件实现的:一种是通过OLE容器控件链接或嵌入对象,OLE容器控件可以引入OLE控件和非限制性可插入型OLE对象;另一种是通过OLE绑定型控件链接或嵌入数据表的通用类型字段中所存放的OLE对象,这通常是些限制性可插入型OLE对象。在VFP中OLE对象是通过链接或嵌入操作方式进行操作的。链接和嵌入操作之间的区别在于OLE对象所存放的地点:链接操作中的OLE对象仍然存放在创建它的源文件中数据表或表单仅仅存储源文件的位置,即一个指针,在更
3、改源文件时,被链接的OLE对象将被及时更新。被链接的OLE对象始终保持着与源文件之间的联系,除非人为断开这种联系;嵌入操作的OLE对象只能存储在数据表或表单中。这些OLE对象不与创建它的源文件保持联系。如果源文件做了更改,它们不会自动反映在VFP应用程序中,除非你再次进行嵌入操作。链接操作通常用于如下场合:OLE对象(数据或图形)可能被经常更改、应用程序必须包含最新版本的OLE对象、存放OLE对象的源文件可以在计算机之间或通过计算机网络进行更新、存放OLE对象的源文件必须被其他应用程序共享。嵌入操作通常用于如下场合:应用程序不需要具有最新版本的OLE对象、嵌入的OLE对象不需要被多个应用程序使
4、用、源文件在被链接后不会被更新。要注意的是VFP本身只是一个OLE客户机,而不是一个OLE服务器。使用OLE对象在应用程序中使用OLE对象首先要考虑OLE对象的类型,针对不同类型的OLE对象,使用不同的方法来引用它们。当程序中要引用的可插入型OLE对象较多时就要考虑用数据表的通用型字段来存储它。1、在VFP的数据表中添加OLE对象方法一:使用数据表设计器给数据表添加一个通用型字段,然后将可插入型OLE对象链接或嵌入到通用型字段的每个记录中。通用字段包含一个10字节的指针,它指向该字段真正的内容,通用型字段的真正类型和数据大小取决于创建这些对象的OLE服务器。这些OLE对象是以链接方式还是以嵌入
5、方式进行操作与该应用程序有关。若OLE对象是以链接方式进行操作的,则数据表中只含有对OLE对象的引用,以及创建这些OLE对象的应用程序的引用;若OLE对象是以嵌入方式进行操作的,数据表中将含有相关OLE对象的副本,以及对创建这些OLE对象的应用程序的引用。通用字段的大小仅受可用磁盘空间的限制。方法二:使用APPENDGENERAL命令从文件中导入OLE对象并将其放入通用型字段中。语法:APPENDGENERALGeneraLFieLdNameFROMFiLeName FROMMEMOPictureFieLdNameDATAcExpressionLINKCLASSOLECLassName2、使用
6、限制性可插入型OLE对象使用通用型字段中所存储的限制性可插入型OLE对象需要使用OLE绑定型控件,步骤如下:(1)在表单设计器中,将一个OLE绑定型控件添加到表单中。(2)通过设置对象的ControLSource属性指定包含OLE对象的通用型字段。如果数据表名为Inventory,通用型字段名为Current,那么可以将ControLSource属性设置成InventoryCurrent。(3)在表单上添加按钮或菜单命令,用以浏览ControLSource属性指定的通用型字段。3、使用OLE控件(OCX文件)及非限制性可插入型OLE对象这两类对象需要使用OLE容器控件。OLE容器控件允许向应用
7、程序中加入OLE对象,包括OLE控件(OCX文件)、非限制性可插入型OLE对象。OLE容器控件与OLE绑定型控件不同在于,它不与VFP表的一个通用型字段相连接。若要在表单中添加OLE控件及非限制性可插入型OLE对象可按如下步骤进行:(1)在表单设计器中,向表单中添加一个OLE容器控件。(2)在“InsertObject”对话框中,选择“CreateNew”或“CreatefromFiLe”或“InsertControL”选项。(3)从显示的列表中选择适当的OLE控件或创建适当类型的对象或增加一个嵌入文件。在插入控件时如果所要的控件没有出现在列表中,可选择“AddControL”按钮将其添加到列
8、表中。也可以通过将OLE控件添加到表单控件工具栏中而将其添加到表单中。在选项对话框中选择控件之后,单击表单控件工具栏上的“ViewCLass”按钮,从子菜单中选择“OLEControL”,单击OLE,然后拖动控件,在表单上设置其大小。下面以一例子说明如何在程序中使用非限制性可插入型OLE对象,本例首先将一个OLE容器控件加入表单,然后使用OLE容器控件的OLECLass和DocumentFiLe属性将MicrosoftExceL作为OLE服务器,并将一个ExceL工作簿指定为要编辑的文件。DocumentFiLe属性指定了在C驱动器中ExceL路径下一个名为BOOK1XLS的工作簿。如果在Do
9、cumentFiLe属性中指定的文件或路径不存在,则本例程不能正常运行,这时需要修改DocumentFiLe来指明一个存在的路径和工作簿文件。另外BOOK1XLS只能读不能修改,下面是其VFP源代码及其说明。frmMyForm=CREATEOBJECT(Form)创建表单frmMyFormCLosabLe=F废止控制菜单框frmMyFormAddObject(cmdCommand1,cmdMyCmdBtn)frmMyFormAddObject(oLeObject,oLeExceLObject)frmMyFormcmdCommand1VisibLe=TfrmMyFormoLeObjectVisi
10、bLe=TfrmMyFormoLeObjectHeight=50frmMyFormShowfrmMyFormoLeObjectDoVerb(1)READEVENTSDEFINECLASSoLeExceLObjectasOLEControLOLeCLass=ExceLSheetDocumentFiLe=C:EXCELBOOK1XLSENDDEFINEDEFINECLASScmdMyCmdBtnASCommandButtonCaption=CanceL=TLeft=125Top=210Height=25PROCEDURECLickCLEAREVENTSENDDEFINE4、使用OLE对象的属性OL
11、E对象有一系列属性可供使用,但是对包含在OLE容器控件中的OLE对象,要确保引用的是OLE对象的属性而不是其容器的属性,这需要将容器的Object属性加到OLE对象名当中。5、使用OLE对象的方法除了设置和读取OLE对象的属性外,还可以使用OLE对象的方法来操作OLE对象。例如,下面的程序使用了ExceL对象的Add方法来创建ExceL工作簿,然后使用Save方法保存该工作簿,并使用Quit方法结束ExceL的本次运行:oLeApp=CREATEOBJECT(ExceLAppLication)oLeAppVisibLe=ToLeAppWorkbooksAddoLeAppCeLLs(1,1)Va
12、Lue=7oLeAppActiveWorkbookSaveAs(C:TEMPXLS)oLeAppQuit与使用属性一样,如果用容器控件创建对象,应确保将“Object”加到引用对象方法的控件名称当中。6、访问集合中的OLE对象一个对象类型可以代表单个对象或若干相关对象的集合。在程序中,集合是一个未经排序的链表结构,每当有对象被添加到集合中或从集合中移去时,其余对象的位置都可能改变。使用集合的Count属性对集合遍历,可以访问集合中的所有对象。Count属性可用来返回集合中项的数目。另外,可以使用Item方法返回集合中的某一项。也可以访问集合内的集合。例如,使用下列程序代码可以在一个单元格区域内
13、访问某一单元格集合:oLeAppCREATEOBJECT(ExceLsheet)oLeAppRange(oLeAppCeLLs(1,1),oLeAppCeLLs(10,10)VaLue1007、使用OLE对象的数组利用OLE技术,不但可以将数组传递给OLE对象的方法,而且可以接收OLE对象传来的数组。传递数组的方式必须是按引用传递,即必须在数组名前加符号(用VFP不能将二维以上的数组传递到OLE对象中)。例如,要发送一个VFP数组到ExceL中,可以使用以下程序代码。它先在VFP中创建一个数组,给数组赋一些值,然后启动ExceL,创建一个工作簿,并给工作表的第一个单元格设置一个初始值,再将此值
14、复制到数组中的其他工作表中:其中用到了ExceL的工作簿集(Workbooks对象),工作表集(Sheets对象)的相关属性及方法和ExceL对象的GetCustomListContents方法。下列代码将数组传递给方法FiLLAcrossSheets,以便将Sheet1中的第一区域内容复制到其它工作表的相同区域。DIMENSIONaV(2)aV(1)Sheet1aV(2)Sheet2oLeAppCREATEOBJECT(ExceLAppLication)oLeAppWorkbooksAddoLeIoLeAppWorkbooksItem(1)oLeISheetsItem(1)CeLLs(1,1)VaLue100初始值oLeISheets(aV)FiLLAcr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB 40248-2026人员密集场所消防安全管理
- T/SILA 012-2023家居照明光健康规范
- T/SAME 001-2022临床实验室II级生物安全柜管理要求
- T/CES 316-2024光伏电站能量流测试技术规范
- T/CHSA 104-2025咬合板治疗颞下颌关节紊乱病的专家共识
- T/CSTEA 00027-2021大田美人茶
- T/SRMA 40.3-2026基于国际功能、残疾和健康分类的结构化康复病历书写指南 第3部分:帕金森
- 2025~2026学年河北省邢台市任泽区骆庄学区小学联考冀教版三年级上册12月月考数学试卷【附答案】
- 2027届河南省鲁山、舞钢九年级数学第一学期期末学业质量监测模拟试题含解析
- 车间级日常安全管理实务培训
- 新版预防未成年人犯罪法知识竞赛题库及答案详解
- 2026年医学科研诚信与伦理课件
- 2026年储能系统(充放电控制)试题及答案
- 2026赤峰市妇幼保健院招聘40名控制数专业技术人员笔试模拟试题及答案详解
- 山东省2027综合评价招生《综合素质测评》模拟试卷C卷
- 2025手术室护理质量敏感指标
- 智慧工地项目数据台账管理手册
- 记账实操-水产养殖厂成本核算方案
- 2026年在线监测设备运维考试题及答案
- 电子数据采集系统(EDC)操作手册
- 第七章健康地生活测试卷 (2)2026-2027学年人教版八年级上册生物
评论
0/150
提交评论