DELPHI
软件工程开发
教学单位:hackbase 作者网站:hh98 作者:天 翼
在 DELPHI 中,有两种方式链接或嵌入 OLE 对象. OLE(object linking and embedding)全称为”对象链接和嵌入”,它是位于 SYSTEM 选项 卡上的 OLE Container 组件. OLE 允许不同的应用程序在一起协调
工作并共享数据,而且能获得其它应用程序的对 象. 对象的链接与嵌入是一种在程序之间共享数据的方法,要使用 OLE,必须要有以下两 类程序:OLE 的服务程序 SERVER 和 OLE 的客户程序. 客户机程序可作为 OLE 的一个容器,服务器则供了编辑特定数据类型的命令.这个容 器可以接收各种各样的对象,如从 OLE 服务器中接收,或者从 WINDOWS 剪贴板中获得, 甚至还可以下载.总之 OLE 服务器提供了创建,编辑,浏览和运行单个数据块的各种命令. 链接对象和嵌入对象二者之间是有所不同的.当用户建立一个链接对象的时候,仅仅是 建立一个指示源文件的指针而已,并不重新建立对象数据.链接到一个对象的多个应用程 序均可修改对象的同一份数据.并能够看到修改后数据的新版本.而嵌入对象则不同,每 个接收嵌入对象的目标应用程序均得到一份数据的副本.不同应用程序中只能分别修改 自已包含的嵌入对象而不会相互影响. 链接:当对象使用链接方式来处理时,数据会放在由 OLE 服务器程序所产生的文件中. 嵌入:当对象使用嵌入方式来处理时,数据放在客户
程序中. 在下列情况下建议使用链接: OLE 对象是由多个 OLE 客户共享的,并希望 OLE 对象的修改反映在这些 OLE 客户中. OLE 对象相当大,不希望因嵌入 OLE 对象而使客户文件变得相当大. OLE 对象可能经常被修改,或者是从很多 OLE 客户文件中修改. 其主要属性有: Allowinplace:这个属性用于决定对象服程序的方式,是布尔型属性.如果该属性设置 为 TRUE,那么在程序运行期间激活对象时,将把服务程序的菜单合并到 客户程序中.如果该属性设置为 FALSE,将不把服务程序的菜单合并到 客户程序中,而是单独为服务程序打开一个窗口. Copyonsve:如果设置为 TRUE,将把 OLE 对象临时写入一个文件中,如果设置为 FALSE.OLE 对象全部留在内存中. ICONIC:判断 OLE 对象是否发生了变化. Storageinterface:返回 OLE 对象的 ISTORAGE 接口,在直接调用 API 时需要用到这个 接口. 主要方法有: changeicondialog:调用这个函数将打开一个更改图标的对话框.
Close:使当前的 OLE 变成非活动状态. DOVERB:这个过程用于对 OLE 对象进行操作. 格式为:doverb(verb:integer); 其 中 参 数 VERB 用 于 指 定 操 作 类 型 ,OVSHOW 表 示 用 于 显 示 OLE 对 象,OVPRIMARY 表示激活 OLE 对象. LOADFROMFILE:载入文件 SAVETOFILE:保存文件. 在 DELPHI 中,有两种方式链接或嵌入 OLE
对象. 1. 在程序的
设计阶段实现. 步骤:1).向窗体中添加一个 OLEcontainer 对象. 2) 选 中 OLEcontainer 对 象 , 单 击 鼠 标 右 键 选 择 或 直 接 双 击 ”INSERT OBJECT…” 弹出对话框
3)如要插入的 OLE 对象是链接对象,则选择”从文件创建” 再定义该对象的文 件名和路径名.
如果是嵌入对象,则不选择”链接” 并在对象类型中选择 OLE 对象.最后确 定. 注意:链接只是对两个文件产生联接关系.占用内存较少,而嵌入则是把文件复制到 当前位置,占用较大内存. 2. 在程序的运行阶段实现.
OLE n. 对象链接和嵌入 container [kEn5teinE] n. 容器(箱,盆,罐,壶,桶,坛子), 集装箱 例:
procedure TForm1.Button1Click(Sender: TObject); begin with olecontainer1 do //窗体中添加一个 OLEcontainer 对象 if not insertobjectdialog then //可以这样理解 not insert object dialog showmessage('没有成功');//提示,没有成功 end; procedure TForm1.Button2Click(Sender: TObject); begin olecontainer1.DoVerb(ovshow); //显示添加的 OLEcontainer 对象 end; procedure TForm1.Button3Click(Sender: TObject); begin close; //关闭