DELPHI基础教程:对象链接与嵌入(一)[1]

DELPHI基础教程:对象链接与嵌入(一)[1],第1张

对象链接和嵌入(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

如何利用jenkins来做android自动化
概述
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。其中包含一些代码静态检查工具,自动打包和自动测试功能。
持续集成流程
环境配置
启动Jenkins
1、 安装jdk
从略,建议16或以上版本,配置好环境变量。
2、 安装tomcat
>启用PHP支持
安装apachephp扩展:
sudo apt install libapache2-mod-php70
安装完需要重启apache:
sudo systemctl restart apache2
apache默认目录新建PHP文件:
sudo nano /var/>1、自动完成安装,基本配置
2、通过提示输入网段、子网掩码、网关、DNS、IP起止地址等信息完成作用域的添加
方法一:
#!/bin/bash
conf="/etc/dhcpdconf"
rpm -q dhcp &> /dev/null
if [ $ -ne 0 ];then
yum -y install dhcp
fi
grep "subnet" $conf &> /dev/null
if [ $ -ne 0 ]; then
echo "
ddns-update-style interim;
ignore client-updates;
default-lease-time 21600;
max-lease-time 43200;
" > $conf
fi
read -p "please input network:" network
read -p "please input netmask:" netmask
read -p "please input gateway:" gateway
read -p "please input DNS:" dns
read -p "please input start_ip:" start_ip
read -p "please input end_ip:" end_ip
echo "
subnet $network netmask $netmask {
option routers $gateway;
option subnet-mask $netmask;
URL地址:
option domain-name-servers $dns;
range dynamic-bootp $start_ip $end_ip;
}
" >> $conf
service dhcpd restart
方法二:
#!/bin/bash
dhcpconf=/etc/dhcpdconf
rpm -q dhcp &> /dev/null
if [ $ -ne 0 ];then
yum -y install dhcp
fi
grep "subnet" $dhcpconf &> /dev/null
if [ $ -ne 0 ];then
echo "ddns-update-style interim;
ignore client-updates;
default-lease-time 21600;
max-lease-time 43200;" > $dhcpconf
fi
while true
do
read -p "please input Network:" network
read -p "please input Netmask:" netmask
read -p "please input Gateway:" gateway
read -p "please input DNS:" dns
read -p "please input Start_IP:" start_ip
read -p "please input End_IP:" end_ip
grep $network $dhcpconf &> /dev/null
if [ $ -ne 0 ];then
echo "subnet $network netmask $netmask {
option routers $gateway;
option subnet-mask $netmask;
option domain-name-servers $dns;
range dynamic-bootp $start_ip $end_ip;
}" >> $dhcpconf
read -p "continue to do (yes/no)" yn
if [ $yn = "no" ]; then
service dhcpd status &> /dev/null
if [ $ -ne 0 ]; then
service dhcpd start &> /dev/null
else
service dhcpd reload &> /dev/null
fi
exit 0
fi
fi
done


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13187165.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-17
下一篇 2023-06-17

发表评论

登录后才能评论

评论列表(0条)

保存