Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Tastendrücke auswerten, teils umleiten?!? (https://www.delphipraxis.net/161819-tastendruecke-auswerten-teils-umleiten.html)

SpezialElektronik 22. Jul 2011 10:58

Tastendrücke auswerten, teils umleiten?!?
 
Hallo ans Forum,
ich erkläre mal kurz worum es geht:
Ich schreibe an einem Steuer-Programm (für externer Hardware). Ich habe einige Edit-Felder in denen aber nur Zahlen ggf. Kommata/Punkte eingegeben werden müssen. Einige Tasten des Programms will ich zur direkten Steuerung der Hardware nutzen (Also Ausgabe von Befehlen über Serielle / Parallele Schnittstelle).
Nun zur Frage:
Das Drücken der ESC-Taste (z.B.) kann ich global im Programm über das OnKeyDown-Ereignis der Form abfangen (gut, so läßt sich ein "Stop" unabhängig von der Lage des Focus ermöglichen).
Ebenso kann ich in dieser Prozedure oder in OnKeyPress natürlich auch Buchstaben auswerten - dumm nur, dass diese dann trotzdem in meinen TEdit-Feldern landen. Ist der Focus in meinem Programm auf einem der vielen Buttons gibt es keine Probleme, aber kann ich nicht einfach "global" verhindern, dass Drücke auf Buchstaben-Tasten vom Programm weitergeben werden (z.B. an ein TEdit-Feld, welches gerade den Focus hat)?

Also den Tastendruck in OnKeyDown-Ereignis auswerten und wenn es sich um einen Buchstaben-Char handelt, diesen löschen bevor er an ein Edit-Feld weitergeben wird (das alles nur in meiner Form - andere Programme sollen nicht beeinträchtigt werden - ich suche nicht sowas wie ein Key-Lock o.ä. was ich hier im Forum schon gefunden habe).

Herzlichen Dank schonmal für alle Tipps und Vorschläge.

P.S.: Delpi-Ver.6 und WinXP

p80286 22. Jul 2011 11:31

AW: Tastendrücke auswerten, teils umleiten?!?
 
Ich weiß nicht ob ich Dich richtig verstanden habe, vielleicht brngt das Dich weiter:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key....
  else begin
    // machwas
    key:=0;
  end;
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if key....
  else begin
    // machwas
    key:='0;
  end;
end;
Gruß
K-H

himitsu 22. Jul 2011 12:26

AW: Tastendrücke auswerten, teils umleiten?!?
 
Nein, da das Edit nunmal diese Buchstaben auswertet, landen sie erstmal bei diesem.
Im OnKeyPress/OnKeyDown/OnKeyUp des Edits kann man dieses aber abfangen und an die Form weiterreichen.

SpezialElektronik 22. Jul 2011 12:55

AW: Tastendrücke auswerten, teils umleiten?!?
 
Wenn ich das richtig verstehe muss ich also bei allen vllt. 15-20 Edit-Feldern meines Programms im OnKeyDown-Ereignis diese "Buchstaben-Prüfung" vornehmen, um dann Ziffern "durchzulassen" und Buchstaben umzuleiten, sehe ich das richtig?
Danke schonmal - klingt mühsam, aber wenn es keine bessere Lösung gibt muss ich das wohl mal versuchen...

himitsu 22. Jul 2011 13:00

AW: Tastendrücke auswerten, teils umleiten?!?
 
Och, man kann ja auch nur eine Ereignisroutine schreiben und allen Edits zuweisen,
oder man leitet sich eine Komponente von TEdit ab und but das dort direkt ein.

SpezialElektronik 22. Jul 2011 13:30

AW: Tastendrücke auswerten, teils umleiten?!?
 
Ja, sowas wie eine Ereignisroutine werde ich wohl machen.
Abgeleitet Edit's habe ich näml. schon neben den "klassichen" TEdits (also im Moment schon 3 verschiedene), da ist diese Funktionalität aber noch nicht drinnen und da ich die noch an anderer Stelle nutzte, will ich die erstmal so lassen...
THX


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz