如何在文本粘贴到TMemo中之前捕获粘贴命令并更改剪贴板的文本,但是在粘贴之后,剪贴板中的文本必须与更改之前的文本相同?
例如,剪贴板中有文字'Simple Question',在TMemo中输入的文字是'Симплe Qуeстиoн',之后剪贴板中的文字就像更改之前的文字'Simple Question'

最佳答案

派生一个从“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处理程序。

10-06 15:41