熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

DELPHI基礎教程:對象鏈接與嵌入(一)[3]

2013-11-23 17:51:14  來源: Delphi編程 

  以下代碼用以狀態條接收OLE服務器的信息

  procedure TOLEObjectFormOleContainerStatusLineEvent(Sender: TObject;

  Msg: String)

  begin

  OLEFrameFormStatusBarPanelCaption := 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包容部件的ObjClassObjDocObjItem屬性將被自動定義

  初始化完成後OLE對象被擊活OLE服務器將獲得控制用戶可通過OLE服務器對OLE對象進行編輯當程序凍結OLE對象OLE包容器部件將包含一幅圖像或位圖代表OLE對象定義OLE包容器部件的AutoActive屬性可重新激活OLE對象缺省情況下雙擊OLE包容器部件可擊活OLE對象

  例程中初始OLE對象的代碼如下

  procedure TOLEObjectFormInitializeOLEObject(Info: Pointer)

  begin

  OLEContainerPInitInfo := Info;

  ReleaseOLEInitInfo(Info)

  end;

  該過程先將初始化指針傳給OLE包容器部件的PInitInfo屬性而後釋放其內存空間

  當用戶單擊例程中的編輯 | 插入菜單項將彈出插入對象對話框選擇對象類型後 OLE對象被激活該過程的代碼如下

  procedure TOLEObjectFormInsertObjectClick(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 TOLEObjectFormDeactivateClick(Sender: TObject)

  begin

  OLEContainerActive := 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_TEXTCF_BIFMAP使用OLE 對象時 需注冊新的剪貼板格式來處理OLE 對象Windows的API中 的RegisterClipbordFormat函數注冊格式

[]  []  []  []  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/25221.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.