Delphi Clipboard[1] 剪貼板 介紹


{該文首發於博客園 滔Roy,無須授權即可轉發,請自覺保留頭部申明}

Delphi Clipboard[1] 剪貼板 介紹

uses
  Clipbrd;
  • TClipboard 對象封裝了Windows剪貼板
  • 剪貼板一次只能保存一份相同類型的數據,以便進行剪切,復制和粘貼。 如果我們以相同的格式將新信息發送到剪貼板,則會擦除之前的內容,但是即使將剪貼板中的內容粘貼到另一個程序中,剪貼板中的內容也會保留在剪貼板中  
  • Delphi內已經具有對Clipboard方法的內置支持的組件,例如:TEdit、TMemo、TOLEContainer、TDDEServerItem、TDBEdit、TDBImage、TDBMemo等
  • 我們經常使用Clipbrd單元中的CutToClipboard、CopyToClipboard 、PasteFromClipboard、Clear和HasFormat方法來處理剪貼板操作和文本/圖形操作

1、剪貼板格式

1.1 Windows提供的默認

  • CF_TEXT = 1;    //文本格式。每行以回車/換行(CR-LF)組合結束。空字符表示數據結束。將此格式用於ANSI文本。
  • CF_BITMAP = 2;   //位圖的句柄(HBITMAP)。
  • CF_METAFILEPICT = 3;  //由METAFILEPICT結構定義的圖元文件圖片格式的句柄。當通過DDE傳遞CF_METAFILEPICT句柄時,負責刪除hMem的應用程序還應釋放CF_METAFILEPICT句柄引用的元文件
  • CF_SYLK = 4;  //Microsoft符號鏈接(SYLK)格式。
  • CF_DIF = 5;  //軟件藝術的數據交換格式。
  • CF_TIFF = 6;  //標記圖像文件格式。
  • CF_OEMTEXT = 7;  //包含OEM字符集中字符的文本格式。每行以回車/換行(CR-LF)組合結束。空字符表示數據結束。
  • CF_DIB = 8;  //一個內存對象,包含一個BITMAPINFO結構,后跟位圖位。
  • CF_PALETTE = 9;  //控制調色板。每當應用程序在剪貼板中放置依賴於或采用調色板的數據時,它也應該將調色板放置在剪貼板上。如果剪貼板包含CF_PALETTE(邏輯調色板)格式的數據,應用程序應使用SelectPalette和RealizePalette函數實現(比較)剪貼板中的任何其他數據與該邏輯調色板。顯示剪貼板數據時,剪貼板始終使用剪貼板上任何CF_PALETTE格式的對象作為其當前調色板。
  • CF_PENDATA = 10;  //用於筆計算的Microsoft Windows的筆擴展數據。
  • CF_RIFF = 11;  //表示比CF_WAVE標准波形格式更復雜的音頻數據。
  • CF_WAVE = 12;  //表示標准波形格式之一的音頻數據,如11 kHz或22 kHz PCM。
  • CF_UNICODETEXT = 13;  //Unicode文本格式。每行以回車/換行(CR-LF)組合結束。空字符表示數據結束。
  • CF_ENHMETAFILE = 14;  //增強元文件(HENHMETAFILE)的句柄。
  • CF_HDROP = 15;  //標識文件列表的HDROP類型句柄。應用程序可以通過將句柄傳遞給DragQueryFile函數來檢索有關文件的信息。
  • CF_LOCALE = $10;  //數據是與剪貼板中的文本關聯的區域設置標識符(LCID)的句柄(HGLOBAL)。關閉剪貼板時,如果其中包含CF_TEXT數據但沒有CF_LOCALE設置數據,系統會自動將CF_區域設置格式設置為當前輸入語言。您可以使用CF_LOCALE設置格式將不同的區域設置與剪貼板文本相關聯。從剪貼板粘貼文本的應用程序可以檢索此格式,以確定用於生成文本的字符集。請注意,剪貼板不支持多個字符集中純文本。要實現這一點,請改用RTF等格式化文本數據類型。系統使用與CF_LOCALE關聯的代碼頁隱式地將CF_TEXT轉換為CF_Unicode文本。因此,正確的代碼頁表用於轉換。
  • CF_MAX = 17;  //{注意:如果WINVER<5,CF_MAX會更改值。為了保持向后兼容性,請對WINVER<5使用CF_MAX,對WINVER>5使用CF_MAX_XP。}
  • CF_DIBV5 = 17;  //一個內存對象,包含BitMapV5頭結構,后跟位圖顏色空間信息和位圖位。
  • CF_MAX_XP = 18;  //{注意:如果WINVER<5,CF_MAX會更改值。為了保持向后兼容性,請對WINVER<5使用CF_MAX,對WINVER>5使用CF_MAX_XP。}
  • CF_OWNERDISPLAY = 128;  //所有者顯示格式。剪貼板所有者必須顯示和更新“剪貼板查看器”窗口,並接收WM_ASKCBFORMATNAME、WM_HSCROLLCLIPBOARD、WM_PAINTCLIPBOARD、WM_SIZECLIPBOARD和WM_VSCROLLCLIPBOARD消息。hMem參數必須為NULL。
  • CF_DSPTEXT = 129;  //與專用格式關聯的文本顯示格式。hMem參數必須是可以以文本格式顯示的數據的句柄,而不是私有格式的數據。
  • CF_DSPBITMAP = 130;  //與專用格式關聯的位圖顯示格式。hMem參數必須是可以以位圖格式顯示的數據的句柄,而不是私有格式的數據。
  • CF_DSPMETAFILEPICT = 131;  //與私有格式關聯的圖元文件圖片顯示格式。hMem參數必須是可以以圖元文件圖片格式顯示的數據的句柄,以代替私有格式的數據。
  • CF_DSPENHMETAFILE = 142;  //與私有格式關聯的增強元文件顯示格式。hMem參數必須是一個數據句柄,可以以增強的圖元文件格式顯示,而不是以私有格式顯示數據。
  • CF_PRIVATEFIRST = $200;  //專用剪貼板格式的整數值范圍的開始。該系列以CF_PRIVATELAST結尾。與專用剪貼板格式關聯的句柄不會自動釋放;剪貼板所有者必須釋放此類句柄,通常是為了響應WM_DESTROYCLIPBOARD消息。
    •   { "Private" 格式無法獲得GlobalFree()'d }
  • CF_PRIVATELAST = 767;  //看 CF_PRIVATEFIRST.
  • CF_GDIOBJFIRST = 768;  //應用程序定義的GDI對象剪貼板格式的整數值范圍的開始。范圍的末尾是CF_gdiobjast。清空剪貼板時,與此范圍內的剪貼板格式關聯的句柄不會使用GlobalFree函數自動刪除。此外,當使用此范圍內的值時,hMem參數不是GDI對象的句柄,而是由GlobalAlloc函數使用GMEM\u MOVEABLE標志分配的句柄。
  • CF_GDIOBJLAST = 1023;  //看 CF_GDIOBJFIRST
    •   { "GDIOBJ" formats do get DeleteObject()'d }

1.2 Delphi內默認提供的格式

  • CF_COMPONENT   //組件

2、Clipbrd常用方法描述:

  • Assign  //將給定對象分配到剪貼板。如果對象是一個TPicture或TGraphic,它將以相應的格式放置在剪貼板上(例如,TBitmap將作為CF_BITMAP放置在剪貼板上)。Picture.Assign(Clipboard) 和 Bitmap.Assign(Clipboard) 也支持分配檢索剪貼板的內容。
  • Clear  //清除剪貼板中的內容。當剪貼板對象將數據添加到剪貼板時,會自動執行此操作。
  • Close  //-如果剪貼板處於打開狀態,則將其關閉。打開和關閉保存剪貼板被打開的次數。在關閉剪貼板的次數與打開剪貼板的次數相同之前,它實際上不會關閉剪貼板。
  • Open  //打開剪貼板並防止所有其他應用程序更改剪貼板。如果只將一個項目添加到剪貼板,則無需進行此調用。如果需要向剪貼板添加多個格式,請調用Open。在添加所有格式之后。打給close。
  • HasFormat   //如果剪貼板上有給定格式,則返回true。
  • GetAsHandle  //以指定格式處理的原始窗口從剪貼板返回數據。句柄不屬於應用程序,應該復制數據。
  • SetAsHandle  //將句柄以給定格式放置在剪貼板上。一旦一個句柄被賦予剪貼板,它就不應該被刪除。它將被剪貼板刪除。
  • GetTextBuf  //檢索、取回數據
  • AsText  //允許從剪貼板放置和檢索文本。如果CF_文本格式可用,則此屬性對檢索有效。
  • FormatCount  //格式數組中的格式數。
  • Formats  //剪貼簿上所有可用格式的列表

 

 

 

創建時間:2022.04.14  更新時間:2022.04.14


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM