知识大全 对象链接与嵌入(一)[3]

Posted 部件

篇首语:知识能使你增加一双眼睛。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 对象链接与嵌入(一)[3]相关的知识,希望对你有一定的参考价值。

DELPHI基础教程:对象链接与嵌入(一)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  以下代码用以状态条接收OLE服务器的信息

  procedure TOLEObjectForm OleContainerStatusLineEvent(Sender: TObject;

  Msg: String)

  begin

  OLEFrameForm StatusBarPanel Caption := Msg

  end;

   插入OLE对象

  运行状态时进行对象链接与插入也要用到插入对话框 Delphi中没有插入对话框部件 但可调用InsertOLEObjectDlg 函数来显示对话框

   InsertOLEObjectDlg函数声明如下

  function InsertOleObjectDlg(Form: TForm; HelpContext: THelpContext;

  var PInitInfo: Pointer) Boolean;

  其中参数Form是拥有插入对话框的窗体 一般将拥有OLE包容器部件的窗体名字传给Form

  参数Helplontext为插入对象对话框定义在线帮助 如果应用程序没有在线帮助 HelpContext的值为零 对话框中将不出现帮助按钮

  参数PInitInfo是一个无类型指针 该指针指向一个包含初始化OLE 部件信息的内部数据结构 InsertOLEObjectDlg修改这个指针以指向一个有效的数据结构 该结构包含了对话框列表中被选择的OLE 对象初始化信息 当该指针被使用后 应调用ReleaseOLEInitInfo过程释放初始化信息所占用的内存

  当用户选择OK 按钮关闭插入对象对话框 InsertOLEObjectDlg 返回真值 并把 PInitInfo指向包含OLE对象的初始化信息的数据结构

   初始化OLE包容器部件

  为了使OLE包容器部件包含OLE对象 必须对部件进行初始化 初始化主要是定义部件的OLE类 如果定义了OLE文件和OLE项目 初始化完成后 OLE 应用程序部件将包含OLE对象

  调用InsertOLEObjetDlg函数可在其参数PInitInfo获得关于OLE对象初始化的信息时 把它传递给OLE包容器部件的PInitInfo属性 OLE包容部件的ObjClass ObjDoc ObjItem属性将被自动定义

  初始化完成后 OLE对象被击活 OLE服务器将获得控制 用户可通过OLE服务器对OLE对象进行编辑 当程序冻结OLE对象 OLE包容器部件将包含一幅图像或位图代表OLE对象 定义OLE包容器部件的AutoActive属性可重新激活OLE对象 缺省情况下 双击OLE包容器部件可击活OLE对象

  例程中初始OLE对象的代码如下

  procedure TOLEObjectForm InitializeOLEObject(Info: Pointer)

  begin

  OLEContainer PInitInfo := Info;

  ReleaseOLEInitInfo(Info)

  end;

  该过程先将初始化指针传给OLE包容器部件的PInitInfo属性 而后释放其内存空间

  当用户单击例程中的 编辑 | 插入 菜单项 将弹出插入对象对话框 选择对象类型后 OLE对象被激活 该过程的代码如下

  procedure TOLEObjectForm InsertObject Click(Sender: TObject)

  var

  Info: Pointer;

  begin

  if InsertOLEObjectDlg(OLEFrameForm Info) then

  InitializeOLEObject(Info)

  end;

   冻结OLE对象

  如果OLE对象是OLE 服务器创建 对象将在OLE服务器中被击活 焦点和控制移到OLE服务器中 要冻结一个由OLE 创建的对象选择 File | Exit 菜单项

  如果OLE 服务器支持本地激活 激活OLE对象后OLE服务器将进行菜单融合 并转换工具条和状态条 要冻结对象 只需在应用程序窗体中异于OLE包容器部件的任何地方单击鼠

  标键即可

  另一种冻结对象的方法是把OLE包容器部件的Active属性设置成假值 在例程中 对象|冻结 菜单项实现冻结功能 代码如下

  procedure TOLEObjectForm Deactivate Click(Sender: TObject)

  begin

  OLEContainer Active := False

  end;

   粘贴OLE对象

  一些OLE服务器允许用户把OLE对象复制到剪贴板 如果一个OLE对象复制到剪贴板上 OLE应用程序可通过初始化OLE包容器部件来粘贴OLE对象

   粘贴对话框

  把OLE对象粘贴到OLE包容器部件 要使用粘贴对话框 Delphi 中没有粘贴对话框部件 但可用PasteSpecialDlg函数显示粘贴对话框

  PasteSpecialDlg 函数声明如下

  function PasteSpecialDlg(Form :TForm;Const First:arrang; HelpConcert: THelpCOntext;var Forrmat : Word; var Hardle : THanlle var PInitInfo :Point ) : Boolean;

  PasteSpecialDlg参数定义如下

  参数Form是拥有粘贴对话框的窗体 应把包含OLE包容器部件的窗体名字传递给Form

  参数Format是注册对象格式的数组 每组格式是BOLEFormat类型的数组成员 例如应用程序可注册两种对象格式 为嵌入对象注册FEmbedClipFmt 为链接对象注册FlinkClipFmt

  BOLEFormat 声明如下

  BOLEFormat: Record

  fmtID : Word;

  fmtName : array[ ] of char;

  fmtResultName : array[ ] of char;

  fmtMediun : BOleMedium;

  fmIsLInkble : Bool;

  end;

  fmtID是对象的剪贴板格式ID号 fmtID 可以是标准的剪贴板格式 CF_TEXT CF_BIFMAP 使用OLE 对象时 需注册新的剪贴板格式来处理OLE 对象 Windows的API中 的RegisterClipbordFormat函数注册格式

cha138/Article/program/Delphi/201311/25221

相关参考

知识大全 对象链接与嵌入(一)[5]

DELPHI基础教程:对象链接与嵌入(一)[5]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 对象链接与嵌入(一)[4]

DELPHI基础教程:对象链接与嵌入(一)[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 对象链接与嵌入(一)[2]

DELPHI基础教程:对象链接与嵌入(一)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 对象链接与嵌入(一)[1]

DELPHI基础教程:对象链接与嵌入(一)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 对象链接与嵌入(二)[4]

DELPHI基础教程:对象链接与嵌入(二)[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 对象链接与嵌入(二)[2]

DELPHI基础教程:对象链接与嵌入(二)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 对象链接与嵌入(二)[1]

DELPHI基础教程:对象链接与嵌入(二)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 链接到外部类

  迄今为止我们见到的内部类好象仅仅是一种名字隐藏以及代码组织方案尽管这些功能非常有用但似乎并不特别引人注目然而我们还忽略了另一个重要的事实创建自己的内部类时那个类的对象同时拥有指向封装对象(这些对象

知识大全 动态链接库编程(一)[3]

DELPHI基础教程:动态链接库编程(一)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 浅谈网页中各种链接引用方法

  在网页中的引用(比如引用cssjsimg等对象)总的来说可以分为以下几种方式  viewsourceprint?<%第一种方法%>  <linkrel=stylesheettyp