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

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

第二种方法(用名称来调用)

适用于所有的语言,好处是不用导入类型了,缺点是调用的速度慢,还有开发时编译器不检查。

用第二种方法不需要类型库了,代码是var myobj:variant;myobj=CreateOleObject('mylib.myobj');之后就可以用了,这个方便吧。其实为了实现用名字调用,需要加上IDispatch接口,不过delphi都自动给我们加好了,不用管直接用就行。

1>、idispatch是COM object的接口, 在Delphi中通常指一个OleObject.

2>、 OleVariant是一种COM object兼容的Variant类型, 可以通用任何Ole Automation 类型, 他与CreateOleObject创建的idispatch兼容 。

(COM组件的编写和COM+组件的编写差不多,所以只写COM+组件的编写情况)

二、COM+编写的具体实例:

1、Com+的编写:

1>、File---->New---->Other....---->ActiveX Library 标签下的 Transactional Object

2>、然后填写: CoClss Name :类的名字,比如:ComPlusThreading Modal :线程模式:Apartment 选项: Supports transactions

当建立COM+ 时选择的事务模式为Requires a Transaction, COM+会根据客户的的请求建立相应的事务,不仅仅是,还会有系统资源等事务.成功SetComplete.回滚SetAbort. 选择Requires a Transaction表示当用户调用这个COM+组件时,COM+环境会为这个组件建立一个新的事务上下文,这和的事务不是一回事。当你的COM+组件提交数据时如果出错,应该告诉事务上下文,只要调用COM+组件的SetAbort方法就可以。这样一来,处于同一个事务上下文的所有COM+组件都会Rollback。如果数据提交成功,应该调用SetComplete,不调用这个方法也可以,因为在默认情况下,COM+组件的事务状态设置为EnableCommite。当处于同一事务上下文的所有COM+组件对象都调用了SetComplete时,该事务上下文才会真正的向提交数据。

3>、然后在View--->Library的对话框中增加方法 注意:如果参数为输出的话,则类型要是指针型,比如:Long * ,然后修改后面的参数in :out,ret

4>、最后完善增加的方法就ok了

2、客户端调用的编写:

1>、先倒入Com+的接口类型. Project --->import Type Library---->选中你编写的Com+的类型,然后选择:Create Unit

3、安装COM+组件有两种方式,

1>、第一种(推荐):如果是在IDE环境里,点击"Run->Install COM+ Objects"即可把打开的Active Library项目安装到COM+环境中,注意:如果打开的项目是 一个普通的Application项目,是不能被安装到COM+环境中的。 将要安装的com+打上勾,然后在application中有两个选项:install to existing application :表示你的com+安装在com服务器的哪个组件包中, install to New application:表示将当前com+组件安装到一个新的组件包中.


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

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

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