- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
对象链接和嵌入(Object Linking and Embeding)
Windows附件组中的书写器是应用OLE的实例,使用单击“对象 | 插入”菜单项, 书写器弹出插入对话框,对话框中列出了多个OLE服务器程序,如公式编辑工具,绘图工具,报表生成工具。用户双击鼠标左键,可激活一个OLE服务器。在OLE服务器中可编辑OLE对象,当用户返回到书写器中时,在书写器文档中将出现OLE对象。
Delphi支持OLE技术,Delphi1.0可以创建OLE应用程序,Delphi2.0可创建OLE自动化服务器和控制器程序。本章通过例程介绍对象链接与嵌入的基本概念,Delphi创建OLE对象的方法,OLE自动化的概念以及如何开发OLE自动化服务器和控制器。
8.1 OLE简介
8.1.1 OLE1.0和OLE2.0 OLE:OLE1.0和OLE2.0。当用户在OLE1.0 服务器中激活OLE对象,服务器程序在前台打开自己的窗体,并获得焦点。OLE窗体失去焦点,存在于单独的窗体之中。
OLE2.0服务器采用“本地”(in place)激活方式。本地激活意味着服务器菜单与应用程序菜单要进行融合,服务器的状态条更换应用程序状态条,服务器的工具条更换应用程序工具条。OLE对象在应用程序窗体中进行编辑,但所有过程均由服务器处理。
创建OLE对象的服务器决定了OLE的激活方式。如果一个OLE1.0的对象在OLE2.0 编译的应用程序中打开,它将采用OLE1.0的方式。
8.1.2 链接与嵌入
链接对象的数据保存在OLE服务器创建的文件中,嵌入对象的数据保存在OLE应用程序中。
链接对象必须以文件形式保存,只有对OLE服务器已经创建好的OLE对象, 才能进行OLE链接,链接的OLE对象文件可被OLE应用程序或其它程序进行修改,OLE 服务器和其它OLE应用程序也可以访问和修改OLE对象。对象数据保存在某一处,但可以被多个应用程序访问。
Delphi应用程序可以得到OLE对象文件中的最新数据。当OLE 对象数据被应用程序修改时,这些变化将在所有包含该对象的其它应用程序中体现。
嵌入对象保存在OLE应用程序中,其它应用程序不能访问该对象。只有在OLE应用程序中激活OLE对象才能对其进行编辑。嵌入的OLE对象不需要保存在文件中,所有数据都在应用程序中,这就确保了OLE数据不会被偶然地删除或修改。不足之处是应用程序的规模因为保存了OLE数据而增大了 。
如果用户想保存对嵌入对象的修改,可以把OLE数据存入文件中,本章第3 节将详细讨论这个问题。
表8.1 使用链接或嵌入的原则。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
何时使用链接 何时使用嵌入
───────────────────────────────
想要对源对象进行修改及将 对源对象进行修改,并将这
这些修改反映到其他与源对 些修改反映在一个特定的应
象链接的应用程序或文本中 用程序或文本中
源对象可能被多个OLE应 源对象不可能被一个OLE应
用程序应用程序频繁修改 用程序频繁修改
源对象的文件不会被频繁移 源对象的文件可能被频繁移
动,且不会被删除 动,且不会被删除
对象很大,一般通过网络或 对象很小,或对象很大却无法
电子邮件进行分配 通过网络或电子邮件进行分配
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
8.1.3 设计状态OLE对象的创建
在Delphi中,可分别在设计状态或运行状态创建OLE对象,表8.2说明了两种状态创建对象的差别。
表8.2 设计、运行状态OLE对象的创建
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
设计状态OLE对象的创建 运行状态OLE对象的创建
──────────────────────────────────────
对象保存在运行文件中,增加了所需 对象保存在一个文件中或只在运行时
编译的程序的规模 才有,减小了编译程序的规模
开发者需在设计时访问OLE服务器 开发者不需要在设计时访问OLE服务器
运行时OLE对象已经创建,减小了 运行时OLE对象已经创建,增加了运行
运行时间 时间
OLE对象在设计运行时间可行性编辑 OLE对象只能在运行时编辑
应用程序的OLE对象数目在设计时已 应用程序可以在运行时创建新的OLE对
经确立 象
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
文档评论(0)