云厂商中阿里布局最早,可谓公有云市场里的龙头老大。但腾讯云、华为云近年发展态势很猛,二者与阿里云目前已形成三足鼎立的局势。不知你有没有接触过VF编程,如果有过的话,对OLE这个东西应该不会很陌生
但不管你有没有接触过它,相信你看了下面的内容,会对你有所帮助的
VFP的OLE技术应用详解
VisuaLFoxPro3.0(以下简称VFP)使用了OLE2.0技术,使VFP应用程序的适应能力大为加强。
VFP提供两种类型的OLE对象:一种是OLE控件(.OCX文件),这是一种自定义控件,通常在WINDOWS\SYSTEM目录下,拥有自己的事件、方法,类似于VFP的基本类,这种控件可以用VC、VB5.0、DeLphi、SDK2.0等编程工具开发。VFP缺省提供了四种可供使用的OLE控件,即通信(MSCOMM32.OCX)、消息应用程序接口MAPI(MSMAPI32.OCX)、OutLine(MSOUTL32.OCX)和裁剪(PICCLP32.OCX);另一种是可插入型OLE对象,这是由其他应用程序创建的,它们没有自己的事件集合。这一种可插入型OLE对象又可分为限制性可插入型OLE对象和非限制性可插入型OLE对象。
VFP提供两种引用OLE对象的途径都是通过VFP中的控件实现的:一种是通过OLE容器控件链接或嵌入对象,OLE容器控件可以引入OLE控件和非限制性可插入型OLE对象;另一种是通过OLE绑定型控件链接或嵌入数据表的通用类型字段中所存放的OLE对象,这通常是些限制性可插入型OLE对象。
在VFP中OLE对象是通过链接或嵌入 *** 作方式进行 *** 作的。链接和嵌入 *** 作之间的区别在于OLE对象所存放的地点:链接 *** 作中的OLE对象仍然存放在创建它的源文件中数据表或表单仅仅存储源文件的位置,即一个指针,在更改源文件时,被链接的OLE对象将被及时更新。被链接的OLE对象始终保持着与源文件之间的联系,除非人为断开这种联系;嵌入 *** 作的OLE对象只能存储在数据表或表单中。这些OLE对象不与创建它的源文件保持联系。如果源文件做了更改,它们不会自动反映在VFP应用程序中,除非你再次进行嵌入 *** 作。链接 *** 作通常用于如下场合:OLE对象(数据或图形)可能被经常更改、应用程序必须包含最新版本的OLE对象、存放OLE对象的源文件可以在计算机之间或通过计算机网络进行更新、存放OLE对象的源文件必须被其他应用程序共享。嵌入 *** 作通常用于如下场合:应用程序不需要具有最新版本的OLE对象、嵌入的OLE对象不需要被多个应用程序使用、源文件在被链接后不会被更新。
要注意的是VFP本身只是一个OLE客户机,而不是一个OLE服务器。
使用OLE对象
在应用程序中使用OLE对象首先要考虑OLE对象的类型,针对不同类型的OLE对象,使用不同的方法来引用它们。当程序中要引用的可插入型OLE对象较多时就要考虑用数据表的通用型字段来存储它。
1、在VFP的数据表中添加OLE对象
方法一:使用数据表设计器给数据表添加一个通用型字段,然后将可插入型OLE对象链接或嵌入到通用型字段的每个记录中。通用字段包含一个10字节的指针,它指向该字段真正的内容,通用型字段的真正类型和数据大小取决于创建这些对象的OLE服务器。这些OLE对象是以链接方式还是以嵌入方式进行 *** 作与该应用程序有关。若OLE对象是以链接方式进行 *** 作的,则数据表中只含有对OLE对象的引用,以及创建这些OLE对象的应用程序的引用;若OLE对象是以嵌入方式进行 *** 作的,数据表中将含有相关OLE对象的副本,以及对创建这些OLE对象的应用程序的引用。通用字段的大小仅受可用磁盘空间的限制。
方法二:使用APPENDGENERAL命令从文件中导入OLE对象并将其放入通用型字段中。语法:
APPENDGENERALGeneraLFieLdName
〔FROMFiLeName FROMMEMOPictureFieLdName〕
〔DATAcExpression〕
〔LINK〕
〔CLASSOLECLassName〕
2、使用限制性可插入型OLE对象
使用通用型字段中所存储的限制性可插入型OLE对象需要使用OLE绑定型控件,步骤如下:
(1)在表单设计器中,将一个OLE绑定型控件添加到表单中。
(2)通过设置对象的ControLSource属性指定包含OLE对象的通用型字段。如果数据表名为Inventory,通用型字段名为Current,那么可以将ControLSource属性设置成Inventory.Current。
(3)在表单上添加按钮或菜单命令,用以浏览ControLSource属性指定的通用型字段。
3、使用OLE控件(.OCX文件)及非限制性可插入型OLE对象
这两类对象需要使用OLE容器控件。OLE容器控件允许向应用程序中加入OLE对象,包括OLE控件(.OCX文件)、非限制性可插入型OLE对象。OLE容器控件与OLE绑定型控件不同在于,它不与VFP表的一个通用型字段相连接。
若要在表单中添加OLE控件及非限制性可插入型OLE对象可按如下步骤进行:
(1)在表单设计器中,向表单中添加一个OLE容器控件。
(2)在“InsertObject”对话框中,选择“CreateNew”或“CreatefromFiLe”或“InsertControL”选项。
(3)从显示的列表中选择适当的OLE控件或创建适当类型的对象或增加一个嵌入文件。
在插入控件时如果所要的控件没有出现在列表中,可选择“AddControL”按钮将其添加到列表中。也可以通过将OLE控件添加到表单控件工具栏中而将其添加到表单中。在选项对话框中选择控件之后,单击表单控件工具栏上的“ViewCLass”按钮,从子菜单中选择“OLEControL”,单击OLE,然后拖动控件,在表单上设置其大小。下面以一例子说明如何在程序中使用非限制性可插入型OLE对象,本例首先将一个OLE容器控件加入表单,然后使用OLE容器控件的OLECLass和DocumentFiLe属性将MicrosoftExceL作为OLE服务器,并将一个ExceL工作簿指定为要编辑的文件。DocumentFiLe属性指定了在C驱动器中ExceL路径下一个名为BOOK1.XLS的工作簿。如果在DocumentFiLe属性中指定的文件或路径不存在,则本例程不能正常运行,这时需要修改DocumentFiLe来指明一个存在的路径和工作簿文件。另外BOOK1.XLS只能读不能修改,下面是其VFP源代码及其说明。
frmMyForm=CREATEOBJECT(′Form′)&&创建表单
frmMyForm.CLosabLe=.F.&&废止控制菜单框
frmMyForm.AddObject(′cmdCommand1′,′cmdMyCmdBtn′)
frmMyForm.AddObject(〃oLeObject〃,〃oLeExceLObject〃)
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:\EXCEL\BOOK1.XLS〃
ENDDEFINE
DEFINECLASScmdMyCmdBtnASCommandButton
Caption=′\ CanceL=.T.
Left=125
Top=210
Height=25
PROCEDURECLick
CLEAREVENTS
ENDDEFINE
4、使用OLE对象的属性
OLE对象有一系列属性可供使用,但是对包含在OLE容器控件中的OLE对象,要确保引用的是OLE对象的属性而不是其容器的属性,这需要将容器的Object属性加到OLE对象名当中。
5、使用OLE对象的方法
除了设置和读取OLE对象的属性外,还可以使用OLE对象的方法来 *** 作OLE对象。例如,下面的程序使用了ExceL对象的Add方法来创建ExceL工作簿,然后使用Save方法保存该工作簿,并使用Quit方法结束ExceL的本次运行:
oLeApp=CREATEOBJECT(”ExceL.AppLication”)
oLeApp.VisibLe=.T.
oLeApp.Workbooks.Add
oLeApp.CeLLs(1,1).VaLue=7
oLeApp.ActiveWorkbook.SaveAs(”C:\TEMP.XLS”)
oLeApp.Quit
与使用属性一样,如果用容器控件创建对象,应确保将“Object”加到引用对象方法的控件名称当中。
6、访问集合中的OLE对象
一个对象类型可以代表单个对象或若干相关对象的集合。
在程序中,集合是一个未经排序的链表结构,每当有对象被添加到集合中或从集合中移去时,其余对象的位置都可能改变。使用集合的Count属性对集合遍历,可以访问集合中的所有对象。Count属性可用来返回集合中项的数目。另外,可以使用Item方法返回集合中的某一项。
也可以访问集合内的集合。例如,使用下列程序代码可以在一个单元格区域内访问某一单元格集合:
oLeApp=CREATEOBJECT(”ExceL.sheet”)
oLeApp.Range(oLeApp.CeLLs(1,1),oLeApp.CeLLs(10,10)).VaLue=100
7、使用OLE对象的数组利用OLE技术,不但可以将数组传递给OLE对象的方法,而且可以接收OLE对象传来的数组。传递数组的方式必须是按引用传递,即必须在数组名前加@符号(用VFP不能将二维以上的数组传递到OLE对象中)。例如,要发送一个VFP数组到ExceL中,可以使用以下程序代码。它先在VFP中创建一个数组,给数组赋一些值,然后启动ExceL,创建一个工作簿,并给工作表的第一个单元格设置一个初始值,再将此值复制到数组中的其他工作表中:其中用到了ExceL的工作簿集(Workbooks对象),工作表集(Sheets对象)的相关属性及方法和ExceL对象的GetCustomListContents方法。下列代码将数组传递给方法FiLLAcrossSheets,以便将Sheet1中的第一区域内容复制到其它工作表的相同区域。
DIMENSIONaV(2)
aV(1)=〃Sheet1〃
aV(2)=〃Sheet2〃
oLeApp=CREATEOBJECT(〃ExceL.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(〃ExceL.AppLication〃)
aOLeArray=oLeApp.GetCustomListContents(1)&&改变数组下标可以显示其它内容
FORnIndex=1toALEN(aOLeArray)
?aOLeArray(nIndex)
ENDFOR
常用词汇:
1、short:修饰int,短整型数据,可省略被修饰的int。
2、long:修饰int,长整型数据,可省略被修饰的int。
3、long long:修饰int,超长整型数据,可省略被修饰的int。
4、signed:修饰整型数据,有符号数据类型。
5、unsigned:修饰整型数据,无符号数据类型。
6、restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。
7、return:用在函数体中,返回特定值(如果是void类型,则不返回函数值)。
8、continue:结束当前循环,开始下一轮循环。
9、break:跳出当前循环或switch结构。
10、goto:无条件跳转语句。
11、if:条件语句,后面不需要放分号。
12、else:条件语句否定分支(与if连用)。
13、switch:开关语句(多重分支语句)。
14、case:开关语句中的分支标记,与switch连用。
15、default:开关语句中的“其他”分支,可选。
常用函数:
1、int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z'),返回非0值,否则返回0。
2、int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0。
3、int abs(int i) 返回整型参数i的绝对值。
4、double cabs(struct complex znum) 返回复数znum的绝对值。
5、double fabs(double x) 返回双精度参数x的绝对值。
6、long labs(long n) 返回长整型参数n的绝对值。
参考资料来源:百度百科—C语言
Users their own understanding of information security of users access Settings survey third-party software third-party programs are run on each server, there is no monitoring, so can any outward to reveal information, cause serious privacy safe hidden trouble After the status quo of social network users' privacy infringement measures social network users privacy protection responsibility investigation累死了。。望采纳有的,marginnote国内有服务器。
MarginNote,这是一款功能强大的阅读和学习工具软件,适用于Mac, iPad, iPhone。它将PDF/EPUB阅读器和多种学习工具集成起来,使得学习者可以在学习时从不同的维度将知识进行重组,连接,从而达到记住,领会的效果。 无论你是研究者,律师,学生,或是终生热爱学习的人,都可以用MarginNote来在阅读时做标注,记笔记,并可以利用思维导图(Mindmap)和大纲工具(Outline)对笔记进行组织,利用标签(Hashtag)创建横向的知识连接,利用学习卡(Flashcards)提高记忆效率。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)