程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 第七章-剪貼板和動態數據交換(一)(1)

第七章-剪貼板和動態數據交換(一)(1)

編輯:Delphi

應用程序間的數據交換是象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

CopyToClipboardTEditTMemoTMaskEdit

TOLEContainer

TDDEServerItem

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

TDBEditTDBMemo

CutToClipboardTDBImage

TEditTMemoTMaskEdit

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

TDBEditTDBMemo

PasteFromClipboardTDBImage

TEditTMemoTMaskEdit

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

除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.2TClipboard的屬性

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

屬性意義

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

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

FormatCount可用剪貼板格式的數目

Formats可用剪貼板格式鏈

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved