Vol*_*kan 1 delphi paste delphi-7 intercept
我TDBMemo在 Delphi 7 中使用一个控件。我想防止用户将CTRL+V.
此解决方案不起作用:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key=#22) or (Key=#3) then Key:=#0; // 22 = [Ctrl+V] / 3 = [Ctrl+C]
end;
Run Code Online (Sandbox Code Playgroud)
所以,我尝试了别的东西:
if (Key=#86) then Key := #0; // this is ok, doesnt allow letter v.
Run Code Online (Sandbox Code Playgroud)
但是当我尝试:
if (Key=#17) AND (Key=#86) then Key := #0; // #17 is supposed to be CTRL value...
Run Code Online (Sandbox Code Playgroud)
它不起作用。
如果我正确理解你想要什么,把它放在你使用 TDBMemo 的单元的顶部
type
TDBMemo = Class(DBCtrls.TDbMemo)
procedure WMPaste(var Message: TMessage); message WM_PASTE;
end;
Run Code Online (Sandbox Code Playgroud)
然后,在实现部分
procedure TDBMemo.WMPaste(var Message: TMessage);
begin
// do nothing
end;
Run Code Online (Sandbox Code Playgroud)
[tbc]如果您希望在包含 TDBMemos 的多个单元中执行此行为,请将上面的代码放入一个单独的单元中,然后确保它出现在DBCtrls之后任何其他包含 TDBMemo 的单元的使用列表中,这样它就会在所有涉及的单位生效。