Delphi 在 Clipbrd 單元定義 TClipboard 類,預定義變量 Clipboard 為其實例,絕大多數情況無需自行創建。支持文本、圖像、組件傳輸。
| 屬性 | 含義 |
|---|---|
| AsText | 保存剪貼板文本,僅運行時可設置 |
| FormatCount | 可用剪貼板格式數目 |
| Formats | 可用剪貼板格式鏈 |
| 方法 | 參數 | 含義 |
|---|---|---|
| Clear | 無 | 清除剪貼板內容 |
| Assign | Source: TPersistent | 拷貝對象到剪貼板,常用於圖形/圖像 |
| Open | 無 | 打開剪貼板,阻止其他程序修改 |
| Close | 無 | 關閉打開的剪貼板 |
| SetComponent | Source: TPersistent | 拷貝組件到剪貼板 |
| GetComponent | Owner, Parent: TPersistent | 從剪貼板取回組件並放置 |
| SetAsHandle | Format: Word | 設置指定格式數據句柄,返回 THandle |
| GetAsHandle | Format: Word | 獲取指定格式數據句柄,返回 THandle |
| HasFormat | Format: Word | 判斷是否擁有給定格式,返回 Boolean |
| SetTextBuf | Buffer: PChar | 設置剪貼板文本內容(>255 字符) |
| 格式 | 含義 |
|---|---|
| CF_TEXT | 文本,行以 CF_LF 結束,nil 標誌結束 |
| CF_BITMAP | Windows 位圖 |
| CF_METAFILE | Windows 元文件 |
| CF_PICTURE | TPicture 類型對象 |
| CF_OBJECT | 任意 TPersistent 類型對象 |
使用 AsText 屬性和 SetTextBuf 方法:
Clipboard.AsText := Form1.Caption; // 將標題拷貝到剪貼板
Label1.Caption := Clipboard.AsText; // 從剪貼板讀取文本到標簽
Clipboard.SetTextBuf(LongTextBuffer); // 超過 255 字符的字符串
主要三方法:CopyToClipboard、CutToClipboard、PasteFromClipboard。包含這些方法的組件:
| 方法 | 組件 |
|---|---|
| CopyToClipboard | TDBEdit, TDBMemo, TDBImage, TEdit, TMemo, TMaskEdit, TOLEContainer, TDDEServerItem |
| CutToClipboard | TDBEdit, TDBMemo, TDBImage, TEdit, TMemo, TMaskEdit |
| PasteFromClipboard | TDBEdit, TDBMemo, TDBImage, TEdit, TMemo, TMaskEdit |
除 TDBImage 外均為文本控件。傳輸前文本必須被選中。TMaskEdit.AutoSelect=True 獲焦點自動選中;TEdit/TMemo.HideSelection=True 失焦隱藏選中狀態,重獲焦點重顯。
MaskEdit1.CutToClipboard; // 選中文本剪切到剪貼板
Memo1.PasteFromClipboard; // 剪貼板文本粘貼到光標處