⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 021.htm

📁 Delphi基础知识讲座
💻 HTM
📖 第 1 页 / 共 4 页
字号:
HelpContext<font face="宋体" lang="ZH-CN">的值为零,对话框中将不出现帮助按钮。</p>
<p>  参数</font>PInitInfo<font face="宋体" lang="ZH-CN">是一个无类型指针,该指针指向一个包含初始化</font>OLE
<font face="宋体" lang="ZH-CN">部件信息的内部数据结构。</font>InsertOLEObjectDlg<font
face="宋体" lang="ZH-CN">修改这个指针以指向一个有效的数据结构,该结构包含了对话框列表中被选择的</font>OLE
<font face="宋体" lang="ZH-CN">对象初始化信息。当该指针被使用后,应调用</font>ReleaseOLEInitInfo<font
face="宋体" lang="ZH-CN">过程释放初始化信息所占用的内存。</p>
<p>  当用户选择</font>OK <font face="宋体" lang="ZH-CN">按钮关闭插入对象对话框,</font>InsertOLEObjectDlg
<font face="宋体" lang="ZH-CN">返回真值,并把</font> PInitInfo<font face="宋体"
lang="ZH-CN">指向包含</font>OLE<font face="宋体" lang="ZH-CN">对象的初始化信息的数据结构。 </p>
</font><p>8.3.2.2 <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">对象,必须对部件进行初始化。</font> <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<font face="宋体" lang="ZH-CN">对象。</p>
<p>  调用</font>InsertOLEObjetDlg<font face="宋体" lang="ZH-CN">函数可在其参数</font>PInitInfo<font
face="宋体" lang="ZH-CN">获得关于</font>OLE<font face="宋体" lang="ZH-CN">对象初始化的信息时,把它传递给</font>OLE<font
face="宋体" lang="ZH-CN">包容器部件的</font>PInitInfo<font face="宋体"
lang="ZH-CN">属性,</font>OLE<font face="宋体" lang="ZH-CN">包容部件的</font>ObjClass,ObjDoc,ObjItem<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>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<font face="宋体" lang="ZH-CN">包容器部件的</font>AutoActive<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">对象。</p>
<p>  例程中初始</font>OLE<font face="宋体" lang="ZH-CN">对象的代码如下:  
</p>
</font><p>procedure TOLEObjectForm.InitializeOLEObject(Info: Pointer);</p>
<p>begin</p>
<p>OLEContainer.PInitInfo := Info;</p>
<p>ReleaseOLEInitInfo(Info)</p>
<p>end;</p>
<font face="宋体" lang="ZH-CN"><p>  该过程先将初始化指针传给</font>OLE<font
face="宋体" lang="ZH-CN">包容器部件的</font>PInitInfo<font face="宋体"
lang="ZH-CN">属性,而后释放其内存空间。</p>
<p>  当用户单击例程中的“编辑</font> | <font face="宋体" lang="ZH-CN">插入”菜单项,将弹出插入对象对话框,选择对象类型后,</font>
OLE<font face="宋体" lang="ZH-CN">对象被激活,该过程的代码如下: </p>
<p> </font> procedure TOLEObjectForm.InsertObject1Click(Sender: TObject);</p>
<p>var</p>
<p>Info: Pointer;</p>
<p>begin</p>
<p>if InsertOLEObjectDlg(OLEFrameForm, 0, Info) then</p>
<p>InitializeOLEObject(Info);</p>
<p>end;</p>
<p>8.3.3 <font face="宋体" lang="ZH-CN">冻结</font>OLE<font face="宋体" lang="ZH-CN">对象 </p>
<p>  如果</font>OLE<font face="宋体" lang="ZH-CN">对象是</font>OLE 1.0<font
face="宋体" lang="ZH-CN">服务器创建,对象将在</font>OLE<font face="宋体"
lang="ZH-CN">服务器中被击活,焦点和控制移到</font>OLE<font face="宋体"
lang="ZH-CN">服务器中。要冻结一个由</font>OLE 1.0<font face="宋体"
lang="ZH-CN">创建的对象选择</font>&quot;File | Exit&quot;<font face="宋体"
lang="ZH-CN">菜单项。</p>
<p>  如果</font>OLE 2.0<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">包容器部件的任何地方单击鼠</p>
<p>标键即可。</p>
<p>  另一种冻结对象的方法是把</font>OLE<font face="宋体" lang="ZH-CN">包容器部件的</font>Active<font
face="宋体" lang="ZH-CN">属性设置成假值。在例程中,“对象</font>|<font
face="宋体" lang="ZH-CN">冻结”菜单项实现冻结功能。代码如下: </p>
<p> </font> procedure TOLEObjectForm.Deactivate1Click(Sender: TObject);</p>
<p>begin</p>
<p>OLEContainer.Active := False</p>
<p>end; </p>
<p>8.3.4 <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">对象复制到剪贴板,如果一个</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">对象。 </p>
</font><p><font face="宋体" lang="ZH-CN">8.3.4.1 粘贴对话框</font></p>
<p><font face="宋体" lang="ZH-CN">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 把</font>OLE<font
face="宋体" lang="ZH-CN">对象粘贴到</font>OLE<font face="宋体" lang="ZH-CN">包容器部件,要使用粘贴对话框,</font>Delphi
<font face="宋体" lang="ZH-CN">中没有粘贴对话框部件,但可用</font>PasteSpecialDlg<font
face="宋体" lang="ZH-CN">函数显示粘贴对话框。</font></p>
<font face="宋体" lang="ZH-CN"><p>  </font>PasteSpecialDlg <font face="宋体"
lang="ZH-CN">函数声明如下: </p>
<p>  </font> function PasteSpecialDlg(Form :TForm;Const First:arrang; HelpConcert:
THelpCOntext;var Forrmat : Word; var Hardle : THanlle var PInitInfo <font face="宋体"
lang="ZH-CN">:</font>Point ) : Boolean; <font face="宋体" lang="ZH-CN"> </font></p>
<p>PasteSpecialDlg<font face="宋体" lang="ZH-CN">参数定义如下:</p>
<p>  参数</font>Form<font face="宋体" lang="ZH-CN">是拥有粘贴对话框的窗体,应把包含</font>OLE<font
face="宋体" lang="ZH-CN">包容器部件的窗体名字传递给</font>Form<font
face="宋体" lang="ZH-CN">。</font></p>
<p><font face="宋体" lang="ZH-CN">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 参数</font>Format<font
face="宋体" lang="ZH-CN">是注册对象格式的数组,每组格式是</font>BOLEFormat<font
face="宋体" lang="ZH-CN">类型的数组成员。例如应用程序可注册两种对象格式。为嵌入对象注册</font>FEmbedClipFmt
<font face="宋体" lang="ZH-CN">,为链接对象注册</font>FlinkClipFmt<font
face="宋体" lang="ZH-CN">。</font></p>
<p>BOLEFormat <font face="宋体" lang="ZH-CN">声明如下: </p>
<p>  </font>BOLEFormat<font face="宋体" lang="ZH-CN">:</font> Record</p>
<p>fmtID : Word;</p>
<p>fmtName : array[0..31] of char;</p>
<p>fmtResultName : array[0..31] of char;</p>
<p>fmtMediun : BOleMedium;</p>
<p>fmIsLInkble : Bool;</p>
<p>end; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fmtID<font face="宋体" lang="ZH-CN">是对象的剪贴板格式</font>ID<font
face="宋体" lang="ZH-CN">号,</font>fmtID <font face="宋体" lang="ZH-CN">可以是标准的剪贴板格式:</font>CF_TEXT,CF_BIFMAP<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>Windows<font face="宋体" lang="ZH-CN">的</font>API<font
face="宋体" lang="ZH-CN">中</font> <font face="宋体" lang="ZH-CN">的</font>RegisterClipbordFormat<font
face="宋体" lang="ZH-CN">函数注册格式。</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fmtName<font face="宋体" lang="ZH-CN">表示是对象的名字,用以定义出现在粘贴对话框中列表框</font>
<font face="宋体" lang="ZH-CN">内的对象名称。在例程中,把“%</font>S<font
face="宋体" lang="ZH-CN">”匹配给</font>fmtName<font face="宋体" lang="ZH-CN">,</font>OLE<font
face="宋体" lang="ZH-CN">服务器自动地把格式化的名字代替“%</font>S<font
face="宋体" lang="ZH-CN">”参数。例如,如果</font>OLE<font face="宋体"
lang="ZH-CN">服务器是画笔,在程序运行时“</font>Paintbrush Picture Object<font
face="宋体" lang="ZH-CN">”将代替“%</font>S<font face="宋体" lang="ZH-CN">”。</p>
<p>  </font>fmtResultName<font face="宋体" lang="ZH-CN">,定义出现在粘贴对话框中结果检查框内的名字。在例程中,</font>
<font face="宋体" lang="ZH-CN">把“%</font>S<font face="宋体" lang="ZH-CN">”传给了</font>fmtResultName<font
face="宋体" lang="ZH-CN">。</font>OLE<font face="宋体" lang="ZH-CN">服务器自动地把格式结果名称代替“%</font>S<font
face="宋体" lang="ZH-CN">”参数。例如,如果</font>OLE<font face="宋体"
lang="ZH-CN">服务器是画笔,程序运行时“</font>Paintbrush Picture<font
face="宋体" lang="ZH-CN">”将代替“%</font>S<font face="宋体" lang="ZH-CN">”。</p>
<p>  </font>fmtMedium<font face="宋体" lang="ZH-CN">是</font>BOLEMedium<font
face="宋体" lang="ZH-CN">类型,是</font>Windows<font face="宋体" lang="ZH-CN">决定对象格式的数据类型。例如,</font>OLE
<font face="宋体" lang="ZH-CN">联</p>
<p>接对象的格式是</font>BOLE_MED_STREAM<font face="宋体" lang="ZH-CN">。</font>OLE<font
face="宋体" lang="ZH-CN">嵌入对象的格式是</font>BOLE_MED_STORAGE<font
face="宋体" lang="ZH-CN">。</font>BOLEMedium<font face="宋体" lang="ZH-CN">函数可计算出需要的</font>BOLEMedium<font
face="宋体" lang="ZH-CN">类型。</p>
<p>  </font>fmtIsLinkale<font face="宋体" lang="ZH-CN">决定对象格式是否可联连。联连对象的</font>fmtIsLinkable<font
face="宋体" lang="ZH-CN">为真值。嵌入对象的</font>fmtIsLinkable<font
face="宋体" lang="ZH-CN">为假值。</p>
<p>  参数</font>HelpContext <font face="宋体" lang="ZH-CN">为粘贴对话框定义在线帮助。如果应用程序没有在线帮助,</font>HelpContext<font
face="宋体" lang="ZH-CN">的值为零,对话框中将不出现帮助按钮。</p>
<p>  参数</font>Form<font face="宋体" lang="ZH-CN">用以定义剪粘板上的格式,是由</font>PasteSpecialDlg<font
face="宋体" lang="ZH-CN">函数进行修改。因为使用粘贴对话框时,应用程序并不知道剪贴板的格式。因而用</font>Format<font
face="宋体" lang="ZH-CN">来处理剪贴板的数据。在本章例程中。</font>
PasteSpecialDlg <font face="宋体" lang="ZH-CN">函数把</font>format <font
face="宋体" lang="ZH-CN">变量修改成</font>FEmbedClipFmt <font face="宋体"
lang="ZH-CN">或</font>FLinkClipFmt<font face="宋体" lang="ZH-CN">格式,这两种格式是在主窗体的</font>OnCreate<font
face="宋体" lang="ZH-CN">事件中定义的。如果剪贴板上的数据不是</font>OLE<font
face="宋体" lang="ZH-CN">对象,</font>Format<font face="宋体" lang="ZH-CN">将被修改成其它类型的格式,如</font>CF_TEXT<font
face="宋体" lang="ZH-CN">等。</p>
<p>  参数</font>Landle<font face="宋体" lang="ZH-CN">定义剪贴板上的数据句柄。由</font>PasteSpecialDlg<font
face="宋体" lang="ZH-CN">函数进行修改。</font> <font face="宋体" lang="ZH-CN">当剪贴板的数据类型不是</font>OLE<font
face="宋体" lang="ZH-CN">对象时,需用</font>Handle<font face="宋体" lang="ZH-CN">参数访问剪贴板数据。</font>Handle<font
face="宋体" lang="ZH-CN">是句柄类型。</p>
<p>  参数</font>PInitInfo<font face="宋体" lang="ZH-CN">是一个指向</font>OLE<font
face="宋体" lang="ZH-CN">对象初始化结构的指针。前面在讲述初始化</font>OLE<font
face="宋体" lang="ZH-CN">应用程序部件时也用到了这种指针。</font>PasteSpecialDlg<font
face="宋体" lang="ZH-CN">函数将修改</font>PInitInfo<font face="宋体" lang="ZH-CN">指针以使其指向一个有效的数据结构。该结构包括了粘贴对话框中被选中的</font>OLE<font
face="宋体" lang="ZH-CN">对象的初始化信息。</p>
<p>  下面介绍粘贴对话框中的部件。</p>
<p>  ●</font> <font face="宋体" lang="ZH-CN">将剪贴板上的数据插入</font>OLE<font
face="宋体" lang="ZH-CN">应用程序,以实现对象嵌入,须选择</font>&quot;Paste&quot;<font

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -