捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  粤ICP备10103342号-1 DELPHI盒子 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 盒子检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
盒子资源分类
全部展开 - 全部合拢
创建一个自动化对象程序全过程Demo
关键字:AutoObject Demo Com Ole 自动化
来 自:原创
平 台:Win2K/2003/NT/XP,Vista/WIN7 下载所需:0 火柴
深浅度:中级 完成时间:2013/3/30
发布者:unjiang (奖励50火柴) 发布时间:2013/4/1
编辑器:Delphi7 语  种:简体中文
分 类:应用软件 下载浏览:275/9198
加入到我的收藏
下载错误报错
登陆以后才能下载
 用户名:
 密 码:
自动登陆(30天有效)
图片如果打不开,说明流量不够了,请稍候下载……
创建一个自动化对象程序全过程Demo

本来Dlephi7自带了一个Demo,但是光看代码,还是不知道如何实现,尤其是tlb库的制作,查阅了官方参考才明白了些。因此自己做了一个更简单的Demo,并记载下来。
自动化对象程序的特征:可以被其他程序调用,就像Word.Application一样。

先创建一个Server程序:
1、新建一个普通程序。
2、File|New|Other/ActiveX/Automation Object打开精灵。
3、填写自动化对象名称。
4、选择实例类型:1)Internal内部型,外部不能直接创建和调用;2)Single Instance单一型,每个程序调用,创建一个新的实例;3)Multiple Instance公用型,多个程序可以用一个实例。这个程序选择Multiple Instance。
5、线程类型。1)Single每次服务一个客户线程,代码不需要线程支持;2)Apartment每个客户线程需要一个线程,代码要保护全程变量;3)Free每个实例都可以被多线程操作;4)Both和Free一样,但是反馈由一个线程支持;5)Neutral多线程同时使用对象,只在COM+中使用。这个程序选择Single。
6、确定是否需要事件支持。Generate Event support code。这个程序不要勾选。
7、精灵会自动产生一个tlb库,有一个xxx_TLB.pas单元和一个xxx.tlb文件,这两个文件会随着修改tlb库而自动更新。该库初始就会有一个Interface和一个CoClass。
8、Interface的dual标志,表示有dispinterface属性,可以通过OLE automation方式存取。默认都是dual。
9、选中Interface,在Interface中加入方法(工具栏的第一个分隔符后一个图标)和属性(工具栏的第一个分隔符后二个图标)。属性有四种,读写,只读,只写,引用(传递一个接口)。属性或方法如果会出错,需要返回HRESULT通知客户端。方法要使用safecall。在Interface中加入的属性和方法会直接关联到CoClass,所以不要在CoClass中加入方法和属性。
10、如果需要添加CoClass,必须为CoClass指定Interface。最好用File|New|Other/ActiveX/Automation Object的精灵增加新的CoClass。
11、在IDE中保存。会自动产生一个xxxCoClass单元,其中自动创建了一个对象,但需要手动实现其中的方法和属性读写方法。这个文件在修改tlb库后会自动更新,但删除一个方法后似乎需要手动删除。需要修改tlb库时候,打开有tlb库的工程,通过菜单View/TypeLibrary可以打开tlb库。也可以用IDE打开tlb文件。
12、实现基本功能后,运行程序一次。

然后再建立一个客户程序调用上面的程序。
1、新建一个普通程序。
2、将xxx_tlb.pas文件加入到工程中。
3、在主窗体单元中引用xxx_tlb.pas。
4、声明一个全局变量,类型为上面程序实现的接口。
5、调用上面程序的功能。


其他具体代码请参见源码。

VCL已经完成了很多基础工作,在手工关闭Server程序时候,还会提示有其他程序在调用这个程序。
Google
 
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们
龙脉加密锁 15元起 Grid++Report 报表 申请支付@网
 相关文章
没有相关文章
相关评论
共有评论0条
我要发表评论 查看全部评论
 
  DELPHI盒子版权所有 技术支持:深圳市麟瑞科技有限公司 1999-2024 V4.01 粤ICP备10103342号-1 更新RSS列表