TEditでコピー/貼り付けを無効にする方法
-
20-08-2019 - |
質問
TEdit
のコピー、切り取り、貼り付けを禁止します。どうすればいいですか?
CTRL + V がコントロールで押されたときにKey=NULL
イベントでKeyDown
を設定しようとしましたが、機能しませんでした。
解決
WM_CUT
、WM_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;
所属していません StackOverflow