Question

Je voudrais éviter de copier, couper et coller dans mon TEdit . Comment puis-je faire cela?

J'ai essayé de définir Key = NULL sur l'événement KeyDown lorsque CTRL + V était enfoncé sur le contrôle, mais cela ne fonctionnait pas. .

Était-ce utile?

La solution

Vous devez empêcher les messages WM_CUT , WM_COPY et WM_PASTE d'être envoyés à votre TEdit. Cette réponse décrit comment procéder pour ce faire en utilisant juste l'API Windows. Pour la VCL, il peut suffire de sous-classer TEdit et de changer sa propriété DefWndProc ou de remplacer sa méthode WndProc .

Autres conseils

Attribuez-le à 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;

Je sais que c'est une vieille question mais j'ajouterai ce que j'ai trouvé. L'affiche originale avait presque la solution. Cela fonctionne bien si vous ignorez couper / copier / coller dans l'événement de pression de touche au lieu de l'événement de touche enfoncée. ie (constructeur 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
}

Vous pouvez utiliser certains programmes globaux qui capturent des raccourcis et bloquent C-V C-C C-X lorsque la fenêtre TEdit est active

Uses Clipbrd;

procedure TForm1.Edit1Enter(Sender: TObject);
begin
  Clipboard.AsText := '';
end;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top