Cómo deshabilitar copiar / pegar en TEdit
-
20-08-2019 - |
Pregunta
Me gustaría evitar copiar, cortar y pegar en mi TEdit
. ¿Cómo puedo hacer esto?
Intenté configurar el Key = NULL
en el evento KeyDown
cuando se presionó CTRL + V en el control, pero no funcionó .
Solución
Deberá evitar que los mensajes WM_CUT
, WM_COPY
y WM_PASTE
se envíen a su TEdit. Esta respuesta describe cómo hacer esto usando solo la API de Windows. Para el VCL, puede ser suficiente subclasificar TEdit
y cambiar su propiedad DefWndProc
o anular su método WndProc
.
Otros consejos
Asigne esto a 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;
Sé que esta es una vieja pregunta, pero agregaré lo que he encontrado. El póster original casi tenía la solución. Funciona bien si ignora cortar / copiar / pegar en el evento de pulsación de tecla en lugar del evento de pulsación de tecla. es decir (constructor de 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
}
Puede usar algunos programas globales que toman atajos y bloquean C-V C-C C-X cuando la ventana TEdit está activa
Uses Clipbrd;
procedure TForm1.Edit1Enter(Sender: TObject);
begin
Clipboard.AsText := '';
end;