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.

War es hilfreich?

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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top