对象链接和嵌入(Object Linking and Embeding)是一组服务功能 它提供了一种用源于不同应用程序的信息创建复合文档的强有力方法 对象可以是几乎所有的信息类型 如文字 位图 矢量图形 甚至于声音注解和录像剪辑等
Windows附件组中的书写器是应用OLE的实例 使用单击 对象 | 插入 菜单项 书写器d出插入对话框 对话框中列出了多个OLE服务器程序 如公式编辑工具 绘图工具 报表生成工具 用户双击鼠标左键 可激活一个OLE服务器 在OLE服务器中可编辑OLE对象 当用户返回到书写器中时 在书写器文档中将出现OLE对象
Delphi支持OLE技术 Delphi 可以创建OLE应用程序 Delphi 可创建OLE自动化服务器和控制器程序 本章通过例程介绍对象链接与嵌入的基本概念 Delphi创建OLE对象的方法 OLE自动化的概念以及如何开发OLE自动化服务器和控制器
OLE简介
OLE 和OLE
迄今为止 有两种版本的OLE:OLE 和OLE 当用户在OLE 服务器中激活OLE对象 服务器程序在前台打开自己的窗体 并获得焦点 OLE窗体失去焦点 存在于单独的窗体之中
OLE 服务器采用 本地 (in place)激活方式 本地激活意味着服务器菜单与应用程序菜单要进行融合 服务器的状态条更换应用程序状态条 服务器的工具条更换应用程序工具条 OLE对象在应用程序窗体中进行编辑 但所有过程均由服务器处理
创建OLE对象的服务器决定了OLE的激活方式 如果一个OLE 的对象在OLE 编译的应用程序中打开 它将采用OLE 的方式
链接与嵌入
链接对象的数据保存在OLE服务器创建的文件中 嵌入对象的数据保存在OLE应用程序中
链接对象必须以文件形式保存 只有对OLE服务器已经创建好的OLE对象 才能进行OLE链接 链接的OLE对象文件可被OLE应用程序或其它程序进行修改 OLE 服务器和其它OLE应用程序也可以访问和修改OLE对象 对象数据保存在某一处 但可以被多个应用程序访问
Delphi应用程序可以得到OLE对象文件中的最新数据 当OLE 对象数据被应用程序修改时 这些变化将在所有包含该对象的其它应用程序中体现
嵌入对象保存在OLE应用程序中 其它应用程序不能访问该对象 只有在OLE应用程序中激活OLE对象才能对其进行编辑 嵌入的OLE对象不需要保存在文件中 所有数据都在应用程序中 这就确保了OLE数据不会被偶然地删除或修改 不足之处是应用程序的规模因为保存了OLE数据而增大了
如果用户想保存对嵌入对象的修改 可以把OLE数据存入文件中 本章第 节将详细讨论这个问题
使用链接或嵌入的原则
想要对源对象进行修改及将这些修改反映到其他与源对象链接的应用程序或文本中 源对象可能被多个OLE应用程序应用程序频繁修改 源对象的文件不会被频繁移动 且不会被删除
对象很大 一般通过网络或电子邮件进行分配
对源对象进行修改 并将这些修改反映在一个特定的应用程序或文本中 源对象不可能被一个OLE应用程序频繁修改 源对象的文件可能被频繁移动 且不会被删除
对象很小 或对象很大却无法通过网络或电子邮件进行分配
设计状态OLE对象的创建
在Delphi中 可分别在设计状态或运行状态创建OLE对象 表 说明了两种状态创建对象的差别
设计 运行状态OLE对象的创建
对象保存在运行文件中 增加了所需编译的程序的规模 开发者需在设计时访问OLE服务器运行时OLE对象已经创建 减小了运行时间 OLE对象在设计运行时间可行性编辑应用程序的OLE对象数目在设计时已经确立
对象保存在一个文件中或只在运行时才有 减小了编译程序的规模 开发者不需要在设计时访问OLE服务器运行时OLE对象已经创建 增加了运行时间 OLE对象只能在运行时编辑 应用程序可以在运行时创建新的OLE对象在设计状态 OLE服务器不能被本地激活 只能在自己的窗体内激活 但在运行状态
只要OLE服务器支持本地激活 就可以使用这种方式
OLE类 文件 项目
OLE类决定创建OLE对象的服务器 有些应用程序需要创建多种类型的OLE对象 例如应用程序同时链接或嵌入公式 等 OLE类也决定OLE对象所包含的数据类型 链接或嵌入对象均要定义OLE类
OLE文件是包含OLE对象数据的源文件 链接对象必须使用对象文件 因为链接对象在文件中保存 如果应用程序从已存在的源文件中创建嵌入对象 也要使用OLE文件 例如 如果链接到QuattiPro笔记本的OLE对象TUTOR WBI存储在D:\DFFICE\QPW目录下 则OLE文件就是D:\DFFICE\QPW\TUTOR WBI 值得注意的是OLE文件只能为链接对象所定义 而对于嵌入对象 只需定义OLE类
OLE项目是代表链接或嵌入数据的OLE文件中的一部分 当应用程序希望OLE对象包含比OLE文件小的数据块时 则必须使用OLE项目
例如 在QuattiPro笔记本中 OLE对象链接了GasCosts的B 到B 范围的网格 OLE项目是$GasCosts;$B$ $B$
设计状态OLE对象的创建
Dephi可以在设计状态和运行状态中创建OLE对象 本节介绍设计状态OLE对象的创建
TOLEContainer部件
要创建OLE对象 需在窗体中加入OLE包容器部件 应用程序部件包含链接或嵌入的对象 用该部件可显示在OLE服务器编辑的数据 部件的ObjClass ObjDoc ObjItem 属性分别定义OLE类 文件 项目 要定义OLE对象是否本地激活 使用InPlaceActive 属性 如果OLE对象可以本地激活 OLE服务器菜单将与OLE应用程序的菜单进行融合 GroupIndex属性的值将决定菜单融合情况
OLE对象创建的步骤
在窗体中增加OLE包容器部件
在Object inspector中单击ObjClass或ObjDoc属性的省略按钮 将出现插入对象对话框
如果要插入的OLE 对象已存储在文件中 选择 Creat From File 而后定义该对象的文件名和路径名 如果是链接对象 则选择链接检查框 如果是嵌入对象 选择 Creat new 并在对象类型列表框中选择OLE对象
选择OK按钮
如果是创建新对象 OLE服务器将激活 则可对OLE对象进行编辑 完成编辑后关闭OLE服务器 典型的例子是单击服务器中的 File 或 File|Update 菜单
此时ObjClass属性中包含了相应的值 如果OLE对象从已存在的文件中创建或插入一
个链接对象 ObjDoc属性包含了OLE文件
lishixinzhi/Article/program/Delphi/201311/25219由于服务必须从服务控制管理器的上下文中运行,而不是从 Visual Studio NET 中运行,因此调试服务不像调试其他 Visual Studio 应用程序类型那样简单。若要调试服务,必须首先启动服务,然后将一个调试器附加到正在运行服务的进程中。然后可以使用 Visual Studio 的所有标准调试功能来调试应用程序。
调试 OnStart 方法可能比较困难,因为 Windows 服务管理器将所有尝试启动服务的时间限制在 30 秒内。调试 Windows 服务。
安装您的服务。
可从服务控制管理器、“服务器资源管理器”或代码启动服务。
在 Visual Studio 中,从“调试”菜单中选择“进程”,出现“进程”对话框,单击“显示系统进程”。
在“可用进程”区域内单击服务的进程,然后单击“附加”。
提示 此进程将与服务的可执行文件同名,出现“附加到进程”对话框。
选择任意适当选项,然后单击“确定”关闭对话框。注意 现在已处于调试模式。
设置要在代码中使用的任意断点。
访问服务控制管理器并 *** 纵服务,并发送停止、暂停和继续命令以命中您的断点。嵌入式。嵌入式 *** 作系统嵌入式 *** 作系统是一种用途广泛的系统软件,所以空调设备控制程序属于单片机的高级应用,高级的是嵌入式系统通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。很简单,把升级软件放在某台电脑上的共享资料夹内,然后写个批处理,批处理内容写的是将共享文件内的资料拷贝到本机上指定的目录内。完了将此批处理群发邮件给所有用户,用户点击后就升级了。不知道你们的电脑有没设置域管理,那样的话更方便。另外,如果程序是你自己写的话,你可以在程序主窗体加载的时候写一个升级过程,判断服务器中程序的时间与本机程序的时间差别,如果服务器上的升级程序大于本机时间则执行升级过程。到深圳宏电的官网上下载他相关的软件开发包,里面有各种语言的程序例程,好好看看。另外用组态软件也是一个好办法,不用编程,直接显示数据包内容,但你的数据包要遵循一种协议,比方说MODBUS协议,或者CAN协议等等,建议用modubs协议。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)