Wie Kopieren / Einfügen in TEdit deaktivieren
-
20-08-2019 - |
Frage
Ich mag Kopie verhindern, schneiden und in meinem TEdit
einfügen. Wie kann ich das tun?
Ich habe versucht, die Key=NULL
auf KeyDown
Ereignis gesetzt wird, wenn STRG + V wurde auf die Kontrolle gedrückt, aber es hat nicht funktioniert.
Lösung
Sie müssen die WM_CUT
, WM_COPY
und WM_PASTE
Nachrichten verhindern, dass zu Ihrem TEdit gesendet werden. Diese Antwort beschreibt, wie Sie dies tun, indem nur der Windows-API. Für die VCL, kann es ausreichend sein TEdit
Unterklasse und seine DefWndProc
Eigenschaft ändern oder seine WndProc
Methode außer Kraft setzen.
Andere Tipps
Weisen, dies zu 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;
Ich weiß, dass dies eine alte Frage, aber ich will hinzufügen, was ich gefunden habe. Das ursprüngliche Plakat hatte fast die Lösung. Es funktioniert gut, wenn Sie Ausschneiden / Kopieren / Einfügen in das Tastendruckereignis statt der Taste nach unten Ereignis ignorieren. dh (C ++ Builder)
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
}
Sie können einige globale Programme verwenden, die Verknüpfungen und Block C-V C-C C-X greifen, wenn TEdit Fenster aktiv ist
Uses Clipbrd;
procedure TForm1.Edit1Enter(Sender: TObject);
begin
Clipboard.AsText := '';
end;