首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

C++Builder TClipboard 類別完整指南:剪貼板操作大全

     編輯:VC 教學

TClipboard 封裝 Windows 剪貼板,提供統一介面存取文字、圖片、自訂格式資料。屬於 TPersistent 衍生類別,全域單一實例由 VCL 管理,勿自行建構/銷毀。

核心屬性

屬性型別說明
AsTextAnsiString剪貼板文字內容。讀取時若非文字格式拋出異常,建議先用 HasFormat(CF_TEXT) 檢查。
FormatCountint目前剪貼板包含的格式數量(唯讀)。
FormatsWord __property Formats[int Index]索引存取所有已註冊格式 ID。

核心方法

方法說明
Assign(TPersistent* Source)從剪貼板取得物件或複製物件到剪貼板(支援圖片、元件等)。
Clear()清空剪貼板內容。
Open() / Close()手動開啟/關閉剪貼板(通常由內部方法自動處理)。
GetAsHandle(Word Format)取得指定格式的 Windows 控制碼資料。
GetComponent(TPersistent* Owner, TPersistent* Parent)從剪貼板貼上元件(需 Owner/Parent 參數)。
GetTextBuf(char* Buffer, int BufSize)取得文字到緩衝區(避免 AnsiString 配置開銷)。
HasFormat(Word Format)檢查剪貼板是否包含指定格式(如 CF_TEXT, CF_BITMAP)。
SetAsHandle(Word Format, HANDLE Handle)以 Windows 控制碼形式放入指定格式資料。
SetComponent(TPersistent* Component)複製元件到剪貼板。
SetTextBuf(const char* Buffer)寫入文字緩衝區到剪貼板。

常見使用範例

複製/貼上文字


#include <Clipbrd.hpp>

void CopyText() {
    Clipboard()->AsText = Edit1->Text;
}

void PasteText() {
    if (Clipboard()->HasFormat(CF_TEXT))
        Edit1->Text = Clipboard()->AsText;
}

複製/貼上圖片


void CopyImage() {
    Clipboard()->Assign(Image1->Picture); // TPicture 支援 Assign
}

void PasteImage() {
    if (Clipboard()->HasFormat(CF_BITMAP))
        Image1->Picture->Assign(Clipboard());
}

自訂格式(需註冊)


Word MyFormat = RegisterClipboardFormat("MyAppDataFormat");
void SetCustomData(void* data, int size) {
    HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, size);
    void* p = GlobalLock(hMem);
    memcpy(p, data, size);
    GlobalUnlock(hMem);
    Clipboard()->SetAsHandle(MyFormat, hMem);
}

重要提醒

  • 使用剪貼板 API 前,單元必須 #include <Clipbrd.hpp> 並 uses Clipbrd(Delphi)或包含標頭(C++)。
  • 全域 Clipboard() 函式回傳單一實例指標,線程安全由 VCL 內部處理。
  • 大量資料操作時,建議手動 Open()/Close() 減少系統開銷。
  • 跨進程剪貼板資料生命週期由系統管理,SetAsHandle 傳入的控制碼所有權移交給系統,勿自行釋放。

TClipboard 讓剪貼板操作變得簡單安全,是 VCL 應用程式資料交換的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved