Einzelnen Beitrag anzeigen

Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#6
  Alt 10. Jul 2002, 10:55
Ich mag das nicht so gerne an EMail-Adresse senden, da die anderen Benutzer dann ja keine Gelegenheit hätten, meine Fehler auszubügeln .
Also: Das setzen der Eigenschaft "KeyPreview" auf TRUE soll bewirken, dass dieses Fenster, solange es im Vordergrund ist, alle Tastendrücke zuerst bekommt (und nicht etwa der Button, das Memo oder sonst eine Komponente, die gerade den Fokus hat).

Nun habe ich mir den Code-Rumpf für die onKey-Ereignisse erzeugen lassen und dort jeweils die im Parameter "Key" gelieferte Taste mit dem Wert 0 überschrieben. Das bewirkt, dass alle Komponenten, die sich jetzt im Anschluss noch für Tastatur-Eingaben interssieren, lediglich die Null geliefert bekommen. (Dieser Umstand mag für die Komponenten ein wenig frustrierend sein, aber das Formular ist in diesem Fall einfach schneller...)
Code:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  Key:= #0;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  Key:= 0;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  Key:= 0;
end;
Das Überschreiben aller drei Ereignisse führt mit Sicherheit zu dem Erfolg, dass Deine Anwendung auf gar keine Taste mehr reagiert und sich wirklich nur noch per Maus bedienen lässt. Du kannst mit diesen Ereignissen ja ein wenig herumspielen; eventuell kannst Du auch eines oder zwei weglassen und kommst trotzdem (und weniger restriktiv) zu Deinem Ziel.

Keine Hemmungen bei weiteren Fragen!

Grüße,
Daniel
Daniel R. Wolf