知识大全 对象链接与嵌入(二)[2]
Posted 知
篇首语:学者的一天比不学无术的人一生还有价值。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 对象链接与嵌入(二)[2]相关的知识,希望对你有一定的参考价值。
DELPHI基础教程:对象链接与嵌入(二)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
利用OLE 程序员可以定义一组命令 使它们进入到其它程序中 这些命令可带参数 看起来很象应用程序在调用函数或过程一样 采用上述办法 可以在人不参与的情况下 就能使得两个应用程序的相互作用
被自动化的程序称作自动化对象或自动化服务器 操作或自动化其他程序的应用程序称为自动化控制器或自动化客户器
Delphi 完全支持OLE 的应用程序自动化 可以用Delphi 编写自动化控制器和服务
器 在应用程序之间可编程的潜能是巨大的 用户可以创建宏或者其它命令 使得某个应用程序能透过其它应用程序进行工作 已经存在的应用程序的宏语言很容易被扩展 它可以包括一组别的应用程序能够执行的命令和函数调用
现在介绍两个应用程序 其中MemoEdit dpr 是多文档界面的文本编辑器 作为OLE自动化服务器 AutoFrom dpr是自动化控制器 运行AutoForm前 在Delphi集成开发环境中单击菜单(run | parameters) Delphi弹出运行参数对话框 如图 输入参数后运行状态如图 AutoForm窗体的多个按钮 可对MemoEdit进行操作 如按Creat按钮 MemoEdit产生三个子窗体 如图 按 AddText 子窗体将出现 This text was added through OLE Automation 的字符串
MemoEdit包括三个单元
Mainfrom MDI主窗体
EditFrom MDE子窗体和自动化类
MemoAuto 应用程序自动化对象
下面结合例程讲述OLE自动化的基本概念及开发
TAutoObject对象
TAutoObject 是Delphi自动化服务器中所有对象的基类 任何自动化对象都是从TAutoObject类派生出来的
OLE对象的定义与其它类的定义类似 它的automated部分象普通类的public部分 OLE控制器可引用在这部分声明的属性和方法 编译器把automated部分创建成OLE自动化对象的入口 但automated部分的代码有很多限制
● 属性方法可以定义 但不能定义域
● 所有属性 参数 函数类型必须是以下类型之一
SmallInt Integer Single Double Currency TDateTime String WordBool Varint
● 属性声明只能包括访问定义符(read and Write) 其它定义符如index stored
default odefault均不能使用
● 访问定义符必须列出相应的方法标识符 不能使用域标识符
● 支持数组类型
● 不允许属性重载
● 方法是可以是虚拟的 但不能是动态的 允许方法重载
在EditFrom单元中定义了TMemoDoc类
type
TMemoDoc = Class(TAutoObject)
private
FEditForm : TEditForm;
funtion CretFileName : String;
funtion CretModiFied : WordBool;
procedure SetFileName(Const Value : String)
automated
procedure Clear;
procedure Ineart(Const Text : String)
procedure Save;
procedure Close;
procedure FileName : String read GretFileName write
SetFileName;
procedure Modified : WordBool read GretModified
end;
TMemeDoc类是MemoEdit程序的内部自动化类 因此不需要注册 外部OLE自动化控制器对它不能直接引用 如果要使外部控制器对自动化对象进行操作 则要在声明自动化对象的单元中调用Automation RegisterClass 进行注册 例程MemoAuto 单元定义了TMemoApp对象并进行注册
unit MemoAuto
…
type
TMemoApp = Class(TAutoObject)
implementation
…
procedure RegisterMemoApp
Const
AutoClassInfo : TAutoClassInfo = (
AutoClass : TMemoApp;
ProgID : MemoEdit Application
ClassIn : FIFF D CF BDCF D AFOE B ;
Description : Memo Editor Application ;
Instancing : acSingle Instance )
begin
Automation RegisterClass(AutoClassInfo)
end;
inibialization
RegisterMemoApp;
end;
自动化对象要在initialization部分中对自动化对象进行注册 注册的信息用以唯一辨识服务器对象 把一个自动化对象加入到服务器中要用到这些信息 程序一旦注册了自动化对象 全局自动化对象将用OLE自动化API进行自动管理
cha138/Article/program/Delphi/201311/25216相关参考
DELPHI基础教程:对象链接与嵌入(二)[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
DELPHI基础教程:对象链接与嵌入(二)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
DELPHI基础教程:对象链接与嵌入(一)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
DELPHI基础教程:对象链接与嵌入(一)[5] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
DELPHI基础教程:对象链接与嵌入(一)[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
DELPHI基础教程:对象链接与嵌入(一)[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
DELPHI基础教程:对象链接与嵌入(一)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
DELPHI基础教程:动态链接库编程(二)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
迄今为止我们见到的内部类好象仅仅是一种名字隐藏以及代码组织方案尽管这些功能非常有用但似乎并不特别引人注目然而我们还忽略了另一个重要的事实创建自己的内部类时那个类的对象同时拥有指向封装对象(这些对象
DELPHI基础教程:动态链接库编程(二)[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!