人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

第7章 剪貼板與動態數據交換(一)

第7章 剪貼板與動態數據交換(一)

更新時間:2022-07-12 文章作者:未知 信息來源:網絡 閱讀次數:

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

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

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

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

  7.1.1 使用剪貼板傳輸文本 

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

   表7.1 包含剪貼板方法的部件

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

  方 法 部 件

  ———————————————————————————

  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獲得輸入焦點時文本自動被選中;若選TEdit、TMemo的HideSelection屬性為True,則失去焦點時,文本選中狀態自動隱藏,重新獲得焦點時再顯示。

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

  MaskEdit .CutToClipboard; 

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

  Memo.PasteFromClipboard; 

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

  7.1.2 剪貼板類 

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

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

  表 7.2 TClipboard的屬性

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

  屬 性 意 義

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

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

  FormatCount 可用剪貼板格式的數目

  Formats 可用剪貼板格式鏈

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

   表 7.3 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 設置剪貼板的文本內容

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

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

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

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

  數據格式 意 義

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

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

  CF_BITMAP Windows位圖

  CF_METAFILE Windows元文件

  CF_PICTURE TPicture類型的對象

  CF_OBJECT 任何TPersistent類型的對象

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

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

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

  Clipboard. AsText := Form1.Caption ; 

  把Form1的標題拷貝到剪貼板。 

  Label1.Caption := Clipboard.AsText; 

  把剪貼板中的文本寫入Label1。

  SetTextBuf用于把超過255個字符的字符串拷入剪貼板。 

  7.1.3 利用剪貼板傳輸圖像 

[1] [2] [3]  下一頁

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 建昌县| 勐海县| 桂东县| 仁寿县| 黎城县| 银川市| 辉县市| 长武县| 晋城| 泸西县| 乌什县| 共和县| 云霄县| 宜丰县| 临朐县| 依安县| 西乌珠穆沁旗| 达州市| 德清县| 盐池县| 阿鲁科尔沁旗| 高要市| 涞源县| 石城县| 吴旗县| 长治市| 鹰潭市| 林州市| 左贡县| 乌鲁木齐市| 驻马店市| 古浪县| 屏边| 运城市| 平凉市| 元谋县| 广德县| 启东市| 晋州市| 龙胜| 柘城县|