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

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

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

  BOLEFormat類型定義在BOLEDefs單元中BOLEMediumCalc函數定義在ToCtrl單元因此主窗中的interface部分應加入這兩個單元

  interface

  use…BOLEDefsToCtrl

  在粘貼OLE對象前應用程序必須知道在剪貼板中是否有OLE對象

  PasteSpecialEnabled函數可判斷粘貼對話框是否有效如果剪貼板上有Fmts定義的任何一種格式PasteSpecialEnable將返回真值 粘貼對話框才能成功地調用反之調用粘貼對話框將不發生任何事件

  以下代碼實現編輯|粘貼菜單項的功能

  procedure TOLEObjectFormPasteSpecialClick(Sender: TObject)

  var

  ClipFmt: Word;

  DataHand: THandle;

  Info: Pointer;

  begin

  if PasteSpecialEnabled(Self OLEFrameFormFmts) then

  if PasteSpecialDlg(Self OLEFrameFormFmts

  ClipFmt DataHand Info) then

  InitializeOLEObject(Info)

  end;

  只有在粘貼對話框有效時編輯|粘貼菜單才有效以下代碼實現此功能

  procedure TOLEObjectFormEditClick(Sender: TObject)

  begin

  PasteSpecialEnabled := PasteSpecialEnabled(Self OLEFrameFormFmts)

  end;

   釋放OLE對象

  從OLE服務器拖動OLE對象並將其放在OLE應用程序是一種方便的對象鏈接與嵌入的方法通過拖放操作用戶不需要使用插入對話框或粘貼對話框來定義OLE對象而只需用鼠標鍵從OLE服務器中住OLE對象拖至OLE應用程序松開鼠標鍵從而實現OLE對象的插入

   注冊OLE釋放目標窗體

  為了接收一個釋放的OLE對象必須有一個窗體在Windows中注冊成OLE釋放目標用RegisterFormASOLEDropTarget函數可實現此功能

  RegisterFormASOLEDropTarger(Form : TFrom;Const Fmts: array of BOlefrom)

  其中Form是OLE對象的釋放目標窗體在本章例程中將子窗體傳遞給Form參數

  Fmts是對象格式的數組它是BOLEFormat 類型的數組 所有要釋放的數據必須用Fmts數組中相應BOLEFormat元素注冊

  在本章例程中注冊的Fmts 數組與主窗體OnCreate事件 聲明的數組相同聯接對象格式和嵌入對象格式如果想接收更多類型的釋放數據就必須在Fmts數組中加入其它元素例如應用程序要接收釋放的文本Fmts需加第三個元素 其fmtId 域為CF_TEXTBOLEMedium域為BOLE_MED_HGLOBL

  拖放過程中不需要用BOLEFormat的fmtNamefmtResultName域如果程序只進行拖放操作而不進行對象粘貼可以不初始化兩個域

  在主窗體的OnCreate事件中可調用RegisterFormAsOLEDropTorget

  procedure TOLEFrameFormFormCreate(Sender : TObject)

  begin…

  Register FormASOleDropTarget(SelfFmts)

  end;

  返回目錄DELPHI基礎教程

       編輯推薦

       Java程序設計培訓視頻教程

       JEE高級框架實戰培訓視頻教程

  Visual C++音頻/視頻技術開發與實戰

  Oracle索引技術

  ORACLEG數據庫開發優化指南

  Java程序性能優化讓你的Java程序更快更穩定

  C嵌入式編程設計模式

  Android游戲開發實踐指南

[]  []  []  []  []  


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