word中activex控件_activex控件 插件_使用activex控件(3)

电脑杂谈  发布时间:2017-05-09 15:09:29  来源:网络整理

4. 如果选择了包括一个"关于"对话框的话,还有一个对应的对话框实现文件。

Delphi的ActiveX控件向导根据所包装的VCL构件的属性、方法和事件生成了ActiveX控件相应的属性、方法和事件。但是它没有把 VCL构件使用非OLE类型(如集合、数组等)的属性、方法和事件转换过去。例如,TStringGrid的Options属性是集合类型的, RowHeights是数组类型的,在控件向导所生成的属性中就没有这些属性。但是有时候偏偏这些属性、方法和事件是很重要的,这时就需要手工添加一些属性、方法和事件!

Delphi自动生成了把VCL构件包装成ActiveX控件所需的包装代码。我们为ActiveX控件增加新的属性、方法和事件的时候,只需要在接口方法的实现里把ActiveX控件的数据与VCL构件的数据联系起来,或者使用VCL构件的方法来完成ActiveX控件的行为,而基本上不需要关心编写一个ActiveX控件的具体细节,例如COM规约等。

一、COM组件的基础知识介绍:

1、什么是COM

COM是微软定的一种组件编写的规范,目的是为了实现组件的重用,不管你是用C、DELPHI、VB什么语言写的,只要遵守这种规范就是COM组件,就能相互之间调用。那这个规范是什么呢,最简单的,就是按规定使用接口,微软定了个IUnkown接口,只要实现了这个接口的类,就可以称为COM组件。在此基础上可以加上自己的接口,实现特定的功能,这就成了有用的COM组件了。

2、COM、DCOM、COM+

COM是一个基于二进制的标准。打个比方,我们用Delphi实现了一个对象,一般情况下,我们只能在Delphi来生成这个对象的实例并调用,而如果我们用Delphi实现了一个COM对象的话,我们可以用VC、VB或者其他任何一种支持COM对象的语言来生成实例和调用。反过来也一样,我们可以在Delphi中使用各种COM对象,而不用介意它是用什么语言编写的。COM提供了分布式COM对象的机制,形象地说你可以调用另一台机器中的COM对象。COM+则是MTS的一个升级,在COM的基础上进一步提供了事务处理和其他很多Pool技术。

2、DELPHI中如何创建COM组件(两个步骤)

(1)、创建一个ActiveX Library,这是个DLL;【ActiveX选项卡】

(2)、创建一个COM Object或者Automation Object,二者选其一,这两者都是COM组件,但是当然还是有区别的,差在调用的方法上,这个后面再说。【ActiveX选项卡】;

(创建了一个ActiveX Library,名叫mylib。一个Automation Object,名叫myobj。并且编译注册。)

注意:COM Object只能通过接口调用,Automation Object可以调接口或名称调用。

3、DELPHI中如何调用COM组件(两种方法调用),

第一种方法(用接口来调用)

适用于支持接口的语言,如C、DELPHI;VB就不行了,好处是速度快,因为不用根据名称去查找了,还有开发时编译器能检查,缺点是要导入类型库。

需要如下操作:

在use里加上mylib_TLB类型库(如果不是自己开发的没有TLB可以从DLL导入生成的),代码是var myobj:Imyobj;myobj=Comyobj.create();之后就可以用了。如果有兴趣可以看看类型库的代码里,Comyobj.create里调用了CreateComObject,这函数返回的是IUnkown接口,再用as操作转成你需要的Imyobj接口。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-46133-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...