如何在将文本粘贴到TMemo之前捕获粘贴命令并更改剪贴板的文本,但是,粘贴后,剪贴板中的文本必须与更改之前相同?
例如,剪贴板上有文本’简单问题’,TMemo中的文字是’СимплeQуeстиoн’,之后剪贴板中的文字就像更改之前的’简单问题’.
解决方法
派生一个从’TMemo’下降的新控件来拦截WM_PASTE消息:
type TPastelessMemo = class(TMemo) protected procedure WMPaste(var Message: TWMPaste); message WM_PASTE; end; uses clipbrd; procedure TPastelessMemo.WMPaste(var Message: TWMPaste); var SaveClipboard: string; begin SaveClipboard := Clipboard.AsText; Clipboard.AsText := 'Simple Question'; inherited; Clipboard.AsText := SaveClipboard; end;
如果您想要禁止任何粘贴操作,请清空WMPaste处理程序.