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

DELPHI基礎教程:剪貼板和動態數據交換(一)[1]

2022-06-13   來源: Delphi編程 

  應用程序間的數據交換是象Windows 這樣的多任務環境的重要特性作為一種基於Windows的開發工具Delphi支持如下四種數據交換方式剪貼板動態數據交換 ( DDE)對象聯接與嵌入(OLE)以及動態聯接庫(DLLs)這中間前三種方式最為常用OLE功能最為強大DDE次之而剪貼板使用最為方便在本章我們只討論剪貼板和動態數據交換利用OLE實現數據交換見下一章利用動態聯接庫(DLLs)進行數據交換將在第十章中介紹

   剪貼板及其應用

  本質上剪貼板只是一個全局內存塊當一個應用程序將數據傳送給剪貼板後通過修改內存塊分配標志把相關內存塊的所有權從應用程序移交給Windows自身其它應用程序可以通過一個句柄找到這個內存塊從而能夠從內存塊中讀取數據這樣就實現了數據在不同應用程序間的傳輸

  剪貼板雖然功能較為簡單且不能實現實時傳輸但卻是更為復雜的DDE和OLE的基礎對於一些只是偶爾需要使用其它應用程序數據的程序來說使用剪貼板不失為一種方便快捷的方式

  Delphi把剪貼板的大部分功能封裝到一個TClipboard類中同時把使用頻度最高的文本傳輸功能(包括DBImage的圖像傳輸功能)置入相應部件作為部件的方法從而使用戶可以十分方便地使用剪貼板進行編程

   使用剪貼板傳輸文本

  剪貼板傳輸文本主要是應用如下的三個方法CopyToClipboardCutToClipboard 和PasteFromClipboard包含這些方法的部件如下表所示

  表 包含剪貼板方法的部件

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━

  方 法 部 件

  

  TDBEdit TDBMemo

  TDBImage

  CopyToClipboard TEdit TMemo TMaskEdit

  TOLEContainer

  TDDEServerItem

  

  TDBEdit TDBMemo

  CutToClipboard TDBImage

  TEdit TMemo TMaskEdit

  

  TDBEdit TDBMemo

  PasteFromClipboard TDBImage

  TEdit TMemo TMaskEdit

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━

  除TDBImage外其余全是有關文本的控件

  在把文本傳輸到剪貼板之前文本必須被選中

  若選TMaskEdit的AutoSelect屬性為True則當MaskEdit獲得輸入焦點時文本自動被選中若選TEditTMemo的HideSelection屬性為True則失去焦點時文本選中狀態自動隱藏重新獲得焦點時再顯示

  下面的語句把MaskEdit中選中的文本剪切到剪貼板

  MaskEdit CutToClipboard;

  下面的語句把剪貼板中的文本粘貼到Memo的當前光標處

  MemoPasteFromClipboard;

  利用剪貼板類也可以實現文本的傳輸見()中的介紹

   剪貼板類

  為方便剪貼板的操作Delphi在Clipbrd庫單元中定義了一個TClipboard類並且預定義了一個變量Clipboard作為類TClipboard的實例從而使用戶在絕大多數場合不必自己去定義一個TClipboard的實例

  利用剪貼板類可以進行文本圖像和部件的傳輸剪貼板類為實現這些方法提供了相應的屬性和方法列出了TClipboard屬性和方法的意義

  表 TClipboard的屬性

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━

  屬 性 意 義

  ───────────────────────────

  AsText 保存剪貼板的文本只有運行時才可設置

  FormatCount 可用剪貼板格式的數目

  Formats 可用剪貼板格式鏈

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━

  表 TClipboard的方法

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  方 法 參 數 意 義

  ─────────────────────────────────────

  Clear 無 清除剪貼板的內容

  Assign Source:TPersistent 把Source參數指定的對象拷貝到剪貼板常用於圖形圖像對象

  Open 無打開剪貼板阻止其它應用程序改變它的內容

  Close 無 關閉打開的剪貼板

  SetComponent Source:TPersistent 把部件拷貝到剪貼板

  GetComponent Owner 從剪貼板取回一個部件並放置

  Parent :TPersistent

  SetAsHandle Format:Word 把指定格式數據的句柄交給剪貼板 返回類型THandle

  GetAsHandle Format:Word 返回剪貼板指定格式數據的句柄 返回類型THandle

  HasFormat Format:Word 判斷剪貼板是否擁有給定的格式 返回類型Boolean

  SetTextBuf Buffer:PChar 設置剪貼板的文本內容

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  剪貼板中可能的數據格式如下表

  表 剪貼板數據格式及其意義

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  數據格式 意 義

  ──────────────────────────────

  CF_TEXT 文本每行以CF_LF結束nil標志文本結束

  CF_BITMAP Windows位圖

  CF_METAFILE Windows元文件

  CF_PICTURE TPicture類型的對象

  CF_OBJECT 任何TPersistent類型的對象

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  利用TClipboard實現文本的傳輸使用AsText屬性和SetTextBuf方法

  AsText屬性為非控件部件的剪貼板操作提供了方便

  Clipboard AsText := FormCaption ;

  把Form的標題拷貝到剪貼板

  LabelCaption := ClipboardAsText;

  把剪貼板中的文本寫入Label

  SetTextBuf用於把超過個字符的字符串拷入剪貼板

   利用剪貼板傳輸圖像

   拷貝

  Image部件上的內容和窗體上的圖形可以直接拷貝到剪貼板圖像拷貝利用Clipboard的Assign方法

  例如

  ClipboardAssign(ImagePicture)

  把Image上的圖像拷貝到剪貼板

[]  []  []  []  


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