我想防止复制,剪切和我TEdit粘贴。我怎样才能做到这一点?

我尝试设置上Key=NULL事件KeyDown CTRL + V 被压在控制,但它并不工作。

有帮助吗?

解决方案

您需要防止被发送到您的TEDIT WM_CUTWM_COPYWM_PASTE消息。 这个答案介绍了如何使用做此只是Windows的API。对于VCL,它可能是足够的子类TEdit并改变其DefWndProc属性或覆盖其WndProc方法。

其他提示

分配这TEdit.OnKeyPress

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;

我知道这是一个老问题,但我会添加什么,我已经找到。原来的海报几乎有了解决方案。如果你忽略按键事件,而不是key down事件的剪切/复制/粘贴它工作正常。即,(C ++助洗剂)

void __fastcall Form::OnKeyPress(TObject *Sender, System::WideChar &Key)
{
   if( Key==0x03/*ctrl-c*/ || Key==0x16/*ctrl-v*/ || Key==0x018/*ctrl-x*/ )
      Key = 0;  //ignore key press
}

可以使用抓住快捷方式和块C-V C-C C-X一些全局程序时TEDIT窗口是活动的

Uses Clipbrd;

procedure TForm1.Edit1Enter(Sender: TObject);
begin
  Clipboard.AsText := '';
end;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top