?? 019.htm
字號:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>—DELPHI基礎(chǔ)教程—第七章 剪貼板和動態(tài)數(shù)據(jù)交換(一)</TITLE><META NAME="keywords" CONTENT=" DELPHI基礎(chǔ)教程 第七章 剪貼板和動態(tài)數(shù)據(jù)交換(一)"><META NAME="description" CONTENT=" - DELPHI基礎(chǔ)教程 - 第七章 剪貼板和動態(tài)數(shù)據(jù)交換(一)"><style><!--#page {position:absolute; z-index:0; left:0px; top:0px}.tt3 {font: 9pt/12pt "宋體"}.tt2 {font: 12pt/15pt "宋體"}a {text-decoration:none}a:hover {color: blue;text-decoration:underline}--></style></HEAD><body text="#000000" bgcolor="#FFFFFF" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3"><TABLE WIDTH="100%" CELLPADDING=10 CELLSPACING=0 BORDER=0><TR><TD CLASS="tt3" VALIGN="top" width="8%" ><strong><A HREF="020.htm"><FONT style="FONT-SIZE: 9pt">后一頁</font></A><BR><A HREF="018.htm"><FONT style="FONT-SIZE: 9pt">前一頁</font></A><BR><A HREF="index.html"><FONT style="FONT-SIZE: 9pt">回目錄</font></A><BR></strong></TD><TD class="tt2" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="隸書">第七章 剪貼板和動態(tài)數(shù)據(jù)交換(一)</FONT></B></center><hr width="94%"><p><font face="宋體" lang="ZH-CN"> 應(yīng)用程序間的數(shù)據(jù)交換是象</font>Windows<font face="宋體" lang="ZH-CN">這樣的多任務(wù)環(huán)境的重要特性。作為一種基于</font>Windows<fontface="宋體" lang="ZH-CN">的開發(fā)工具,</font>Delphi<font face="宋體" lang="ZH-CN">支持如下四種數(shù)據(jù)交換方式:剪貼板、動態(tài)數(shù)據(jù)交換</font>( DDE)<font face="宋體" lang="ZH-CN">、對象聯(lián)接與嵌入</font>(OLE)<fontface="宋體" lang="ZH-CN">以及動態(tài)聯(lián)接庫</font>(DLLs)<font face="宋體"lang="ZH-CN">。這中間前三種方式最為常用,</font>OLE<font face="宋體"lang="ZH-CN">功能最為強(qiáng)大,</font>DDE<font face="宋體" lang="ZH-CN">次之。而剪貼板使用最為方便。在本章,我們只討論剪貼板和動態(tài)數(shù)據(jù)交換。利用</font>OLE<fontface="宋體" lang="ZH-CN">實(shí)現(xiàn)數(shù)據(jù)交換見下一章,利用動態(tài)聯(lián)接庫</font>(DLLs)<fontface="宋體" lang="ZH-CN">進(jìn)行數(shù)據(jù)交換將在第十章中介紹。 </p></font><p align="center">7.1 <font face="宋體" lang="ZH-CN">剪貼板及其應(yīng)用 </p></font><p><font face="宋體" lang="ZH-CN"> 本質(zhì)上,剪貼板只是一個全局內(nèi)存塊。當(dāng)一個應(yīng)用程序?qū)?shù)據(jù)傳送給剪貼板后,通過修改內(nèi)存塊分配標(biāo)志,把相關(guān)內(nèi)存塊的所有權(quán)從應(yīng)用程序移交給</font>Windows<fontface="宋體" lang="ZH-CN">自身。其它應(yīng)用程序可以通過一個句柄找到這個內(nèi)存塊,從而能夠從內(nèi)存塊中讀取數(shù)據(jù)。這樣就實(shí)現(xiàn)了數(shù)據(jù)在不同應(yīng)用程序間的傳輸。 </p></font><p><font face="宋體" lang="ZH-CN"> 剪貼板雖然功能較為簡單,且不能實(shí)現(xiàn)實(shí)時傳輸,但卻是更為復(fù)雜的</font>DDE<fontface="宋體" lang="ZH-CN">和</font>OLE<font face="宋體" lang="ZH-CN">的基礎(chǔ)。對于一些只是偶爾需要使用其它應(yīng)用程序數(shù)據(jù)的程序來說,使用剪貼板不失為一種方便、快捷的方式。</p></font><p> Delphi<font face="宋體"lang="ZH-CN">把剪貼板的大部分功能封裝到一個</font>TClipboard<fontface="宋體" lang="ZH-CN">類中,同時把使用頻度最高的文本傳輸功能</font>(<fontface="宋體" lang="ZH-CN">包括</font>DBImage<font face="宋體" lang="ZH-CN">的圖像傳輸功能</font>)<fontface="宋體" lang="ZH-CN">置入相應(yīng)部件作為部件的方法,從而使用戶可以十分方便地使用剪貼板進(jìn)行編程。 </p></font><p>7.1.1 <font face="宋體" lang="ZH-CN">使用剪貼板傳輸文本 </p><p>剪貼板傳輸文本主要是應(yīng)用如下的三個方法</font>:CopyToClipboard<fontface="宋體" lang="ZH-CN">、</font>CutToClipboard <font face="宋體" lang="ZH-CN">和</font>PasteFromClipboard<fontface="宋體" lang="ZH-CN">。包含這些方法的部件如下表所示。 </p><p> 表</font>7.1 <font face="宋體" lang="ZH-CN">包含剪貼板方法的部件</font></p><p><font face="宋體" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━</p><p>方 法 部 件</p><p>———————————————————————————</p></font><p>TDBEdit<font face="宋體" lang="ZH-CN"> </font>TDBMemo</p><p>TDBImage</p><p>CopyToClipboard TEdit TMemo TMaskEdit</p><p>TOLEContainer</p><p>TDDEServerItem</p><p><font face="宋體" lang="ZH-CN">———————————————————————————</p></font><p>TDBEdit TDBMemo</p><p>CutToClipboard TDBImage</p><p>TEdit TMemo TMaskEdit</p><p><font face="宋體" lang="ZH-CN">———————————————————————————</p></font><p>TDBEdit TDBMemo</p><p>PasteFromClipboard TDBImage</p><p>TEdit TMemo TMaskEdit </p><p><font face="宋體" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━ </p></font><p><font face="宋體" lang="ZH-CN"> 除</font>TDBImage<fontface="宋體" lang="ZH-CN">外,其余全是有關(guān)文本的控件。</p></font><p><font face="宋體" lang="ZH-CN"> 在把文本傳輸?shù)郊糍N板之前,文本必須被選中。</p></font><p><font face="宋體" lang="ZH-CN"> 若選</font>TMaskEdit<fontface="宋體" lang="ZH-CN">的</font>AutoSelect<font face="宋體" lang="ZH-CN">屬性為</font>True<fontface="宋體" lang="ZH-CN">,則當(dāng)</font>MaskEdit<font face="宋體" lang="ZH-CN">獲得輸入焦點(diǎn)時文本自動被選中;若選</font>TEdit<fontface="宋體" lang="ZH-CN">、</font>TMemo<font face="宋體" lang="ZH-CN">的</font>HideSelection<fontface="宋體" lang="ZH-CN">屬性為</font>True<font face="宋體" lang="ZH-CN">,則失去焦點(diǎn)時,文本選中狀態(tài)自動隱藏,重新獲得焦點(diǎn)時再顯示。</p><p>下面的語句把</font>MaskEdit<font face="宋體" lang="ZH-CN">中選中的文本剪切到剪貼板: </p></font><p>MaskEdit .CutToClipboard; </p><p><font face="宋體" lang="ZH-CN">下面的語句把剪貼板中的文本粘貼到</font>Memo<fontface="宋體" lang="ZH-CN">的當(dāng)前光標(biāo)處: </p></font><p>Memo.PasteFromClipboard<font face="宋體" lang="ZH-CN">; </p><p>利用剪貼板類也可以實(shí)現(xiàn)文本的傳輸,見</font>(7.1.2)<font face="宋體"lang="ZH-CN">中的介紹。 </p></font><p>7.1.2 <font face="宋體" lang="ZH-CN">剪貼板類 </p></font><p><font face="宋體" lang="ZH-CN"> 為方便剪貼板的操作,</font>Delphi<fontface="宋體" lang="ZH-CN">在</font>Clipbrd<font face="宋體" lang="ZH-CN">庫單元中定義了一個</font>TClipboard<fontface="宋體" lang="ZH-CN">類,并且預(yù)定義了一個變量</font>Clipboard<fontface="宋體" lang="ZH-CN">作為類</font>TClipboard<font face="宋體" lang="ZH-CN">的實(shí)例,從而使用戶在絕大多數(shù)場合不必自己去定義一個</font>TClipboard<fontface="宋體" lang="ZH-CN">的實(shí)例。</p></font><p><font face="宋體" lang="ZH-CN"> 利用剪貼板類可以進(jìn)行文本、圖像和部件的傳輸,剪貼板類為實(shí)現(xiàn)這些方法提供了相應(yīng)的屬性和方法。表</font>7.2<fontface="宋體" lang="ZH-CN">、表</font>7.3<font face="宋體" lang="ZH-CN">列出了</font>TClipboard<fontface="宋體" lang="ZH-CN">屬性和方法的意義。 </p></font><p><font face="宋體" lang="ZH-CN">表</font> 7.2 TClipboard<font face="宋體"lang="ZH-CN">的屬性</font></p><p><font face="宋體" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━</p><p>屬 性 意 義</font></p><p><font face="宋體" lang="ZH-CN">───────────────────────────</p></font><p>AsText <font face="宋體" lang="ZH-CN">保存剪貼板的文本,只有運(yùn)行時才可設(shè)置</p></font><p>FormatCount <font face="宋體" lang="ZH-CN">可用剪貼板格式的數(shù)目</p></font><p>Formats <font face="宋體" lang="ZH-CN">可用剪貼板格式鏈</font></p><p><font face="宋體" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━ </p><p> 表</font> 7.3 TClipboard<font face="宋體" lang="ZH-CN">的方法</font></p><p><font face="宋體" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p><p>方 法 參 數(shù) 意 義</font></p><p><font face="宋體" lang="ZH-CN">─────────────────────────────────────</p></font><p>Clear <font face="宋體" lang="ZH-CN">無 清除剪貼板的內(nèi)容</p></font><p>Assign Source:TPersistent <font face="宋體" lang="ZH-CN">把</font>Source<fontface="宋體" lang="ZH-CN">參數(shù)指定的對象拷貝到剪貼板,常</font></p><p><font face="宋體" lang="ZH-CN">用于圖形、圖像對象</p></font><p>Open <font face="宋體" lang="ZH-CN">無打開剪貼板,阻止其它應(yīng)用程序改變它的內(nèi)容</p></font><p>Close <font face="宋體" lang="ZH-CN">無 關(guān)閉打開的剪貼板</p></font><p>SetComponent Source:TPersistent <font face="宋體" lang="ZH-CN">把部件拷貝到剪貼板</p></font><p>GetComponent Owner <font face="宋體" lang="ZH-CN">從剪貼板取回一個部件并放置</p></font><p>Parent :TPersistent</p><p>SetAsHandle Format:Word <font face="宋體" lang="ZH-CN">把指定格式數(shù)據(jù)的句柄交給剪貼板</p><p>返回類型:</font>THandle</p><p>GetAsHandle Format:Word <font face="宋體" lang="ZH-CN">返回剪貼板指定格式數(shù)據(jù)的句柄</p><p>返回類型:</font>THandle</p><p>HasFormat Format:Word <font face="宋體" lang="ZH-CN">判斷剪貼板是否擁有給定的格式</p><p>返回類型:</font>Boolean</p><p>SetTextBuf Buffer:PChar <font face="宋體" lang="ZH-CN">設(shè)置剪貼板的文本內(nèi)容</font></p><p><font face="宋體" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ </p><p> 剪貼板中可能的數(shù)據(jù)格式如下表。 </p><p>表</font> 7.4<font face="宋體" lang="ZH-CN"> 剪貼板數(shù)據(jù)格式及其意義</font></p><p><font face="宋體" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p><p>數(shù)據(jù)格式 意 義</font></p><p><font face="宋體" lang="ZH-CN">──────────────────────────────</p></font><p>CF_TEXT <font face="宋體" lang="ZH-CN">文本。每行以</font>CF_LF<fontface="宋體" lang="ZH-CN">結(jié)束,</font>nil<font face="宋體" lang="ZH-CN">標(biāo)志文本結(jié)束</p></font><p>CF_BITMAP Windows<font face="宋體" lang="ZH-CN">位圖</p></font><p>CF_METAFILE Windows<font face="宋體" lang="ZH-CN">元文件 </p></font><p>CF_PICTURE TPicture<font face="宋體" lang="ZH-CN">類型的對象</p></font><p>CF_OBJECT <font face="宋體" lang="ZH-CN">任何</font>TPersistent<fontface="宋體" lang="ZH-CN">類型的對象</font></p><p><font face="宋體" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ </p><p>利用</font>TClipboard<font face="宋體" lang="ZH-CN">實(shí)現(xiàn)文本的傳輸使用</font>AsText<fontface="宋體" lang="ZH-CN">屬性和</font>SetTextBuf<font face="宋體" lang="ZH-CN">方法。</p></font><p>AsText<font face="宋體" lang="ZH-CN">屬性為非控件部件的剪貼板操作提供了方便。如: </p></font><p>Clipboard. AsText := Form1.Caption ; </p><p><font face="宋體" lang="ZH-CN">把</font>Form1<font face="宋體" lang="ZH-CN">的標(biāo)題拷貝到剪貼板。 </p></font><p>Label1.Caption := Clipboard.AsText; </p><p><font face="宋體" lang="ZH-CN">把剪貼板中的文本寫入</font>Label1<fontface="宋體" lang="ZH-CN">。</p></font><p>SetTextBuf<font face="宋體" lang="ZH-CN">用于把超過</font>255<fontface="宋體" lang="ZH-CN">個字符的字符串拷入剪貼板。 </p></font><p>7.1.3 <font face="宋體" lang="ZH-CN">利用剪貼板傳輸圖像 </p></font><p>7.1.3.1 <font face="宋體" lang="ZH-CN">拷貝 </p></font><p>Image<font face="宋體" lang="ZH-CN">部件上的內(nèi)容和窗體上的圖形可以直接拷貝到剪貼板。圖像拷貝利用</font>Clipboard<fontface="宋體" lang="ZH-CN">的</font>Assign<font face="宋體" lang="ZH-CN">方法。</p><p>例如: </p></font><p>Clipboard.Assign(Image1.Picture); </p><p><font face="宋體" lang="ZH-CN">把</font>Image1<font face="宋體" lang="ZH-CN">上的圖像拷貝到剪貼板。 </p>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -