質問

TEditのコピー、切り取り、貼り付けを禁止します。どうすればいいですか?

CTRL + V がコントロールで押されたときにKey=NULLイベントでKeyDownを設定しようとしましたが、機能しませんでした。

役に立ちましたか?

解決

WM_CUTWM_COPY、およびWM_PASTEメッセージがTEditに送信されないようにする必要があります。 この回答を使用してこれを行う方法について説明します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;

これは古い質問ですが、見つけたものを追加します。元のポスターにはほとんど解決策がありました。キーダウンイベントの代わりにキープレスイベントでカット/コピー/貼り付けを無視する場合は正常に動作します。 ie(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
}

TEditウィンドウがアクティブなときにショートカットを取得してC-V C-C C-Xをブロックするグローバルプログラムを使用できます

Uses Clipbrd;

procedure TForm1.Edit1Enter(Sender: TObject);
begin
  Clipboard.AsText := '';
end;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top