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ó .

¿Fue útil?

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;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top