📄 021.htm
字号:
lang="ZH-CN">对象的创建 </p>
<p> </font>Dephi<font face="宋体" lang="ZH-CN">可以在设计状态和运行状态中创建</font>OLE<font
face="宋体" lang="ZH-CN">对象。本节介绍设计状态</font>OLE<font face="宋体"
lang="ZH-CN">对象的创建。 </p>
</font><p>8.2.1 TOLEContainer<font face="宋体" lang="ZH-CN">部件 </p>
<p> 要创建</font>OLE<font face="宋体" lang="ZH-CN">对象,需在窗体中加入</font>OLE<font
face="宋体" lang="ZH-CN">包容器部件。</font> <font face="宋体" lang="ZH-CN">应用程序部件包含链接或嵌入的对象。用该部件可显示在</font>OLE<font
face="宋体" lang="ZH-CN">服务器编辑的数据。部件的</font>ObjClass,ObjDoc,ObjItem
<font face="宋体" lang="ZH-CN">属性分别定义</font>OLE<font face="宋体"
lang="ZH-CN">类、文件、项目。要定义</font>OLE<font face="宋体" lang="ZH-CN">对象是否本地激活,使用</font>InPlaceActive
<font face="宋体" lang="ZH-CN">属性。如果</font>OLE<font face="宋体" lang="ZH-CN">对象可以本地激活,</font>OLE<font
face="宋体" lang="ZH-CN">服务器菜单将与</font>OLE<font face="宋体" lang="ZH-CN">应用程序的菜单进行融合,</font>GroupIndex<font
face="宋体" lang="ZH-CN">属性的值将决定菜单融合情况。 </p>
</font><p>8.2.2 OLE<font face="宋体" lang="ZH-CN">对象创建的步骤: </p>
<p> </font>1.<font face="宋体" lang="ZH-CN">在窗体中增加</font>OLE<font
face="宋体" lang="ZH-CN">包容器部件;</p>
<p> </font>2.<font face="宋体" lang="ZH-CN">在</font>Object inspector<font
face="宋体" lang="ZH-CN">中单击</font>ObjClass<font face="宋体" lang="ZH-CN">或</font>ObjDoc<font
face="宋体" lang="ZH-CN">属性的省略按钮,将出现插入对象对话框;</font></p>
<p> 3.<font face="宋体" lang="ZH-CN">如果要插入的</font>OLE
<font face="宋体" lang="ZH-CN">对象已存储在文件中,选择“</font>Creat From
File<font face="宋体" lang="ZH-CN">”,而后定义该对象的文件名和路径名。如果是链接对象,则选择链接检查框。</font>
<font face="宋体" lang="ZH-CN">如果是嵌入对象,选择“</font>Creat new<font
face="宋体" lang="ZH-CN">”,并在对象类型列表框中选择</font>OLE<font
face="宋体" lang="ZH-CN">对象;</p>
<p> </font>4.<font face="宋体" lang="ZH-CN">选择</font>OK<font face="宋体"
lang="ZH-CN">按钮;</p>
<p> 如果是创建新对象,</font>OLE<font face="宋体" lang="ZH-CN">服务器将激活,则可对</font>OLE<font
face="宋体" lang="ZH-CN">对象进行编辑,完成编辑后关闭</font>OLE<font
face="宋体" lang="ZH-CN">服务器。典型的例子是单击服务器中的“</font>File<font
face="宋体" lang="ZH-CN">”或“</font>File|Update<font face="宋体" lang="ZH-CN">”菜单。</p>
<p> </font>5.<font face="宋体" lang="ZH-CN">此时</font>ObjClass<font
face="宋体" lang="ZH-CN">属性中包含了相应的值,如果</font>OLE<font
face="宋体" lang="ZH-CN">对象从已存在的文件中创建或插入一</p>
<p>个链接对象,</font>ObjDoc<font face="宋体" lang="ZH-CN">属性包含了</font>OLE<font
face="宋体" lang="ZH-CN">文件。</p>
<p> 在设计对象状态时也可以粘贴</font>OLE<font face="宋体" lang="ZH-CN">对象,其步骤如下:</p>
<p> </font>1.<font face="宋体" lang="ZH-CN">激活服务器应用程序,选择</font>OLE<font
face="宋体" lang="ZH-CN">包容器部件;</p>
<p> </font>2.<font face="宋体" lang="ZH-CN">在服务器中,将数据或对象拷贝到剪切板;</p>
<p> </font>3.<font face="宋体" lang="ZH-CN">进入</font>Delphi<font face="宋体"
lang="ZH-CN">集成开发环境,选择</font>OLE<font face="宋体" lang="ZH-CN">包容器部件;</p>
<p> </font>4.<font face="宋体" lang="ZH-CN">在</font> Object inspector<font
face="宋体" lang="ZH-CN">窗体中选择</font>ObjItem<font face="宋体" lang="ZH-CN">属性的省略</font>(<font
face="宋体" lang="ZH-CN">…</font>)<font face="宋体" lang="ZH-CN">按钮;</p>
<p> </font>5.<font face="宋体" lang="ZH-CN">在列表中选择</font>OLE<font
face="宋体" lang="ZH-CN">对象;</p>
<p> </font>6.<font face="宋体" lang="ZH-CN">选择“</font>Paste"<font
face="宋体" lang="ZH-CN">创建一个嵌入对象或选择</font>"Pastelink"<font
face="宋体" lang="ZH-CN">创建链接对象;</p>
<p> </font>7.<font face="宋体" lang="ZH-CN">选择</font>OK<font face="宋体"
lang="ZH-CN">。</font></p>
<p>OLE<font face="宋体" lang="ZH-CN">包容器部件在此时初始化。如果粘贴一个嵌入对象,</font>ObjClass<font
face="宋体" lang="ZH-CN">属性将包含适当的值。如果粘贴一链接对象,</font>ObjClass,ObjDoc,ObjItem<font
face="宋体" lang="ZH-CN">属性将全部定义。</font>OLE <font face="宋体"
lang="ZH-CN">应用程序部件包含代表</font>OLE<font face="宋体" lang="ZH-CN">对象的图片。</p>
<p> 如果</font>OLE<font face="宋体" lang="ZH-CN">服务器程序支持</font>OLE<font
face="宋体" lang="ZH-CN">对象的拖放功能,则在设计状态从服务器中拖动对象至应用程序,应用程序将创建链接对象,具体步骤:</p>
<p> </font>1.<font face="宋体" lang="ZH-CN">激活服务器,并</font>Delphi<font
face="宋体" lang="ZH-CN">集成开放环境中选择要链接的对象;</p>
<p> </font>2.<font face="宋体" lang="ZH-CN">按隹鼠标左键拖动</font>OLE<font
face="宋体" lang="ZH-CN">对象至设计状态的窗体;</p>
<p> </font>3.<font face="宋体" lang="ZH-CN">松开鼠键释放</font>OLE<font
face="宋体" lang="ZH-CN">对象。</p>
<p> 窗体将创建</font>OLE<font face="宋体" lang="ZH-CN">应用程序并进行初始化。 </p>
</font><p>8.3 OLE<font face="宋体" lang="ZH-CN">应用程序的开发 </p>
<p> </font>Delphi<font face="宋体" lang="ZH-CN">可以在设计状态和运行状态创建</font>OLE<font
face="宋体" lang="ZH-CN">对象,上一节介绍的是在设计状态如何创建</font>OLE<font
face="宋体" lang="ZH-CN">对象,这一节将通过例程介绍如何在运行状态创建</font>OLE<font
face="宋体" lang="ZH-CN">对象、粘贴对象、拖动对象,以及</font>OLE <font
face="宋体" lang="ZH-CN">对象的文件操作。我们开发的</font> OLE.dpr<font
face="宋体" lang="ZH-CN">是一个</font>OLE<font face="宋体" lang="ZH-CN">应用程序的实例</font></p>
<p>8.3.1 OLE<font face="宋体" lang="ZH-CN">应用程序界面开发 </p>
<p> </font>OLE.dpr<font face="宋体" lang="ZH-CN">采用了多文档界面,父窗体有菜单,工具条,状态条,子窗体有一个</font>OLE<font
face="宋体" lang="ZH-CN">包容器部件,下面分别加以介绍。 </p>
</font><p>8.3.1.1 OLE<font face="宋体" lang="ZH-CN">应用程序的菜单 </p>
<p> </font>OLE<font face="宋体" lang="ZH-CN">应用程序的菜单与其它应用程序的主菜单大体一致,如果应用程序中有支持本地激活的</font>OLE
2.0<font face="宋体" lang="ZH-CN">对象,则要进行菜单融合。查阅</font>OLE <font
face="宋体" lang="ZH-CN">服务器的资料可知道服务器是否支持本地激活。</p>
<p> </font>OLE<font face="宋体" lang="ZH-CN">应用程序菜单的</font>GroupIndex<font
face="宋体" lang="ZH-CN">属性决定融合菜单的位置,即融合菜单是更换主菜单,还是插入至应用程序的主菜单中。</p>
<p> </font>OLE<font face="宋体" lang="ZH-CN">服务器,将融合三组菜单</font>:Edit,View,Help<font
face="宋体" lang="ZH-CN">,每组菜单分配了唯一的组索引值。在</font>OLE<font
face="宋体" lang="ZH-CN">应用程序中任何索引值为</font>1,3,5<font
face="宋体" lang="ZH-CN">的菜单组在菜单融合时被</font>OLE<font face="宋体"
lang="ZH-CN">服务器中具有相应索引值的菜</font> <font face="宋体"
lang="ZH-CN">单更换。在本例程中,编辑菜单项在菜单融合时被服务器的</font>"Edit"<font
face="宋体" lang="ZH-CN">替换。如图</font>8.3<font face="宋体" lang="ZH-CN">。</font>
<font face="宋体" lang="ZH-CN">要想保存应用程序中的菜单,分配有异于</font>1,3,5<font
face="宋体" lang="ZH-CN">的索引值。</font></p>
<p><font face="宋体" lang="ZH-CN">表</font>8.3 <font face="宋体" lang="ZH-CN">融合后的菜单</font></p>
<p><font face="宋体" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font></p>
<p><font face="宋体" lang="ZH-CN">菜单</font> <font face="宋体" lang="ZH-CN"> 索引值 功能描述 来源</font>(OLE<font
face="宋体" lang="ZH-CN">激活时</font>)</p>
<p><font face="宋体" lang="ZH-CN">────────────────────────────────</font></p>
<p><font face="宋体" lang="ZH-CN">文件 </font> 0 <font face="宋体" lang="ZH-CN"> 使用文件和退出程序 </font>
OLE<font face="宋体" lang="ZH-CN">应用程序</font></p>
<p>Edit 1 <font face="宋体" lang="ZH-CN">编辑</font>OLE<font face="宋体"
lang="ZH-CN">对象 </font> OLE<font face="宋体" lang="ZH-CN">服务器</font></p>
<p><font face="宋体" lang="ZH-CN">对象 </font> 2 <font face="宋体" lang="ZH-CN">操作未激活的</font>OLE<font
face="宋体" lang="ZH-CN">对象 </font> OLE<font face="宋体" lang="ZH-CN">应用程序</font></p>
<p>View 3 <font face="宋体" lang="ZH-CN">修改</font>OLE<font face="宋体"
lang="ZH-CN">对象的观测方式 </font> OLE<font face="宋体" lang="ZH-CN">服务器</font></p>
<p><font face="宋体" lang="ZH-CN">窗体 </font> 4 <font face="宋体" lang="ZH-CN">操纵窗体 </font>
OLE<font face="宋体" lang="ZH-CN">应用程序</font></p>
<p>Help 5 <font face="宋体" lang="ZH-CN">访问服务器在线帮助 </font> <font
face="宋体" lang="ZH-CN"> </font>OLE<font face="宋体" lang="ZH-CN">服务器</font></p>
<p><font face="宋体" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ </p>
</font><p>8.3.1.2 OLE<font face="宋体" lang="ZH-CN">工具条和状态条 </p>
<p> 当</font>OLE<font face="宋体" lang="ZH-CN">对象被本地激活时,</font>OLE<font
face="宋体" lang="ZH-CN">服务器将试图用自己的工具条和状态条替换</font>OLE<font
face="宋体" lang="ZH-CN">应用程序的。如果应用程序想要本地激活,</font>
<font face="宋体" lang="ZH-CN">就应该在应用程序中编写相应的代码让服务器使用工具条和状态条。要做到这点,必须:</p>
<p> ●</font> <font face="宋体" lang="ZH-CN">设置工具条和状态条</p>
<p> ●</font> <font face="宋体" lang="ZH-CN">在应用程序中加入状态条</p>
<p> 通过修改面板部件的属性创建工具条和状态条。</p>
<p> 当</font>OLE<font face="宋体" lang="ZH-CN">对象被本地激活时,面板或其他对齐控制将与</font>OLE<font
face="宋体" lang="ZH-CN">服务器程序进行协调。</font> <font face="宋体"
lang="ZH-CN">这意味</font></p>
<p>OLE<font face="宋体" lang="ZH-CN">服务器可以替换</font>OLE<font face="宋体"
lang="ZH-CN">应用程序窗体中任何对齐控制,但锁定的控制不能被替换。例如,</font>
</p>
<font face="宋体" lang="ZH-CN"><p>如果面板的</font>align<font face="宋体"
lang="ZH-CN">属性是</font>alTop,alleft,alBottom,alIngh<font face="宋体" lang="ZH-CN">时,控制未锁定,</font>OLE<font
face="宋体" lang="ZH-CN">服务器可以替换。要使应用程序的工具条、状态条不被替换,可将</font>locked<font
face="宋体" lang="ZH-CN">属性设置成真值。</p>
<p> 当</font>OLE <font face="宋体" lang="ZH-CN">对象被激活,</font>OLE <font
face="宋体" lang="ZH-CN">服务器在状态条中显示有关信息时,</font>OLE <font
face="宋体" lang="ZH-CN">应用程序部件的</font>OnStatusLineEvent<font
face="宋体" lang="ZH-CN">事件发生,一个文本字符会将从</font>OLE<font
face="宋体" lang="ZH-CN">服务器传至该事件句柄。</font> OnStatusLineEvent<font
face="宋体" lang="ZH-CN">事件句柄的</font>MSG<font face="宋体" lang="ZH-CN">参数接受文本字符。</font></p>
<p><font face="宋体" lang="ZH-CN">以下代码用以状态条接收</font>OLE<font
face="宋体" lang="ZH-CN">服务器的信息:</font></p>
<p>procedure TOLEObjectForm.OleContainerStatusLineEvent(Sender: TObject;</p>
<p>Msg: String);</p>
<p>begin</p>
<p>OLEFrameForm.StatusBarPanel.Caption := Msg</p>
<p>end; </p>
<p>8.3.2 <font face="宋体" lang="ZH-CN">插入</font>OLE<font face="宋体" lang="ZH-CN">对象</font>
</p>
<p><font face="宋体" lang="ZH-CN">
运行状态时进行对象链接与插入也要用到插入对话框,</font>Delphi<font
face="宋体" lang="ZH-CN">中没有插入对话框部件,但可调用</font>InsertOLEObjectDlg
<font face="宋体" lang="ZH-CN">函数来显示对话框。 </p>
</font><p>8.3.2.1 InsertOLEObjectDlg<font face="宋体" lang="ZH-CN">函数声明如下: </p>
</font><p>function InsertOleObjectDlg(Form: TForm; HelpContext: THelpContext;</p>
<p>var PInitInfo: Pointer): Boolean;</p>
<font face="宋体" lang="ZH-CN"><p> 其中参数</font>Form<font face="宋体"
lang="ZH-CN">是拥有插入对话框的窗体,一般将拥有</font>OLE<font
face="宋体" lang="ZH-CN">包容器部件的窗体名字传给</font>Form.</p>
<p><font face="宋体" lang="ZH-CN">参数</font>Helplontext<font face="宋体"
lang="ZH-CN">为插入对象对话框定义在线帮助,如果应用程序没有在线帮助,</font>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -