可我一般使用Clipboard.HasFormat($C078)
檢測在剪貼板上的任何 富文本格式?
不,您需要通過RegisterClipboardFormat
函數註冊RTF剪貼板格式。返回值由系統生成,可能會有所不同。
註冊一個新的剪貼板格式。這種格式可以用作 有效的剪貼板格式。
如果已經存在具有指定名稱的註冊格式,則不會註冊新的 格式,並且返回值會標識現有的 格式。這使得多個應用程序能夠使用相同的註冊剪貼板格式來複制和粘貼數據 。
var
CF_RTF: UINT;
...
initialization
CF_RTF := RegisterClipboardFormat('Rich Text Format');
然後檢查:
if Clipboard.HasFormat(CF_RTF) then ...
{ or // if Windows.IsClipboardFormatAvailable(CF_RTF) then ... }
編輯:閱讀文檔後:How to Use Rich Edit Clipboard Operations
恆CF_RTF
在RichEdit
單元已經被聲明爲:
CF_RTF = 'Rich Text Format';
CF_RTFNOOBJS = 'Rich Text Format Without Objects';
CF_RETEXTOBJ = 'RichEdit Text and Objects';
因此,對返回的值RegisterClipboardFormat
使用其他命名可能是一個更好的主意。例如
uses RichEdit;
...
var
CF_RICHTEXT: UINT;
...
initialization
CF_RICHTEXT := RegisterClipboardFormat(RichEdit.CF_RTF);
和:
if Clipboard.HasFormat(CF_RICHTEXT) then ...
注:現在已經有幾個保留系統剪貼板格式,如CF_TEXT
(= 1),CF_BITMAP
(= 2)等等,但「CF_RTF 「或」CF_RICHTEXT「不是其中之一。它是由RICHEDIT
公共控制使用的自定義格式,並且已經通過RegisterClipboardFormat
註冊,如前所述。
我已經完成了這個工作,因爲它是在很多網站上推薦的。然後我再將格式化文本從寫字板複製到剪貼板。但剪貼板間諜程序不會列出任何'CF_RTF'格式。 – user1580348
@user,對不起,我不明白你的意思。你的意思是剪貼板間諜沒有明確顯示「CF_RTF」作爲描述?如果是這種情況,你可以命名你的變量「'CF_RICHTEXT'」或其他,這沒關係。格式標識符無論如何都是字符串,即「富文本格式」。而不是CF_BITMAP這是一個系統常量(2)。 'CF_RTF'是* custom *格式。 – kobik
那麼字符串「富文本格式」是一個系統常量?否則,剪貼板無法將其識別爲RichText的標識符? – user1580348