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

Posted

篇首语:常识是本能,有足够的常识便是天才。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 对象链接与嵌入(一)[4]相关的知识,希望对你有一定的参考价值。

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

  fmtName表示是对象的名字 用以定义出现在粘贴对话框中列表框 内的对象名称 在例程中 把 %S 匹配给fmtName OLE服务器自动地把格式化的名字代替 %S 参数 例如 如果OLE服务器是画笔 在程序运行时 Paintbrush Picture Object 将代替 %S

  fmtResultName 定义出现在粘贴对话框中结果检查框内的名字 在例程中 把 %S 传给了fmtResultName OLE服务器自动地把格式结果名称代替 %S 参数 例如 如果OLE服务器是画笔 程序运行时 Paintbrush Picture 将代替 %S

  fmtMedium是BOLEMedium类型 是Windows决定对象格式的数据类型 例如 OLE 联

  接对象的格式是BOLE_MED_STREAM OLE嵌入对象的格式是BOLE_MED_STORAGE BOLEMedium函数可计算出需要的BOLEMedium类型

  fmtIsLinkale决定对象格式是否可联连 联连对象的fmtIsLinkable为真值 嵌入对象的fmtIsLinkable为假值

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

  参数Form用以定义剪粘板上的格式 是由PasteSpecialDlg函数进行修改 因为使用粘贴对话框时 应用程序并不知道剪贴板的格式 因而用Format来处理剪贴板的数据 在本章例程中 PasteSpecialDlg 函数把format 变量修改成FEmbedClipFmt 或FLinkClipFmt格式 这两种格式是在主窗体的OnCreate事件中定义的 如果剪贴板上的数据不是OLE对象 Format将被修改成其它类型的格式 如CF_TEXT等

  参数Landle定义剪贴板上的数据句柄 由PasteSpecialDlg函数进行修改 当剪贴板的数据类型不是OLE对象时 需用Handle参数访问剪贴板数据 Handle是句柄类型

  参数PInitInfo是一个指向OLE对象初始化结构的指针 前面在讲述初始化OLE应用程序部件时也用到了这种指针 PasteSpecialDlg函数将修改PInitInfo指针以使其指向一个有效的数据结构 该结构包括了粘贴对话框中被选中的OLE对象的初始化信息

  下面介绍粘贴对话框中的部件

  ● 将剪贴板上的数据插入OLE应用程序 以实现对象嵌入 须选择 Paste ;

  ● 在OLE服务器资源文件与OLE应用程序之间建立联连 以实现对象联连 须选择 Paste Line;

  ● 要将闻连与嵌入的对象显示成图标 选择 Display As Icon 若这个检查框被选中 改变图标( Chang Icon )按钮将显示通过这个按钮可改变OLE对象的缺省图标或标签

  ● 如果数据不是注册的格式 Paste Paste link 选择键将变灰 用户无法从剪贴板上粘贴数据 在本章例程中 剪贴板上的数据只能是FEmbedClipFmt(嵌入对象) 和FlinkClipFmt(链接对象)

  ● 用户在列表框中选择数据类型 有时数据被解释成多种类型 例如在包含OLE服务器功能的字处理器中把文本复制到剪贴板中 应用程序可以以文本和OLE对象两种方式粘贴对象 列表框中出现的选择项由OLE服务器决定

  用户在粘贴对话框中选择OK按钮 PasteSpecialDlg返回真值 关于OLE 应用程序的初始化信息贮存在PInitInfo所指向的结构中

   在剪贴板中使用OLE对象

  要把OLE对象粘贴到OLE应用程序中 必须用Windows的 RegisterClipboardFormat函数为链连对象 嵌入对象注册两种新的剪贴板格式 这些格式将在BOLEFormat记录的fmtIdt域中被用到

  本章例程中 程序在OnCreate事件中注册OLE对象的剪贴板格式 以下代码是主窗体的OnCreate事件

  procedure TOLEFrameForm FormCreate(Sender: TObject)

  begin

  FEmbedClipFmt := RegisterClipboardFormat( Embedded Object )

  FLinkClipFmt := RegisterClipboardFormat( Link Source )

  Fmts[ ] fmtId := FEmbedClipFmt;

  Fmts[ ] fmtMedium := BOLEMediumCalc(FEmbedClipFmt)

  Fmts[ ] fmtIsLinkable := False;

  StrPCopy(Fmts[ ] fmtName %s )

  StrPCopy(Fmts[ ] fmtResultName %s )

  Fmts[ ] fmtId := FLinkClipFmt;

  Fmts[ ] fmtMedium := BOLEMediumCalc(FLinkClipFmt)

  Fmts[ ] fmtIsLinkable := True;

  StrPCopy(Fmts[ ] fmtName %s )

  StrPCopy(Fmts[ ] fmtResultName %s )

  RegisterFormAsOleDropTarget(Self Fmts)

  end;

  程序传给RegistClipBroardFormat函数一个描述格式的参数 它返回一个Word类型的值 该值能唯一的辨识新注册的格式 FEmbdeClipFmt FlinkClipFmt 是TOLEFormat类的私有数据成员 声明如下

  TYPE

  TOLEForaneForm = Class(TForm)

  …

  private

  FEmbedClipFmt: Word;

  FLinkClipFmt: Word;

  function CreateChild: TOLEObjectForm;

  public

  Fmts: array[ ] of BOleFormat;

  end;

  在注册剪贴板格式后 还必须定义OLE 格式才能进行对象粘贴 每种格式定义在BOLEFormat记录中 程序中可能注册标准剪贴板格式并用这种格式进行粘贴 例如 注册文本作为粘贴格式 将BOLEFormat记录为fmtId域定义为CF_TEXT fmt Medium 域定义为BOLE_MED_HGLOBOL BOLEMediumCalc 函数可以根据定义的剪贴板格式计算出fmtMedium值 在本章例程中 程序注册了两种格式 一种是链接OLE对象的格式 另一种是嵌入OLE对象的格式

cha138/Article/program/Delphi/201311/25222

相关参考

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

知识大全 链接到外部类

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

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

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