Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Im Form die RETURNs vollständig abfangen (https://www.delphipraxis.net/191157-im-form-die-returns-vollstaendig-abfangen.html)

WiWo 14. Dez 2016 12:00

Im Form die RETURNs vollständig abfangen
 
Hallo,
Ich möchte in allen Forms (bei mir abgeleitet von einer gemeinsamen Basis-Form) Eingaben, die von einem Barcode-Scanner kommen, abfangen. Die Scans starten mit STX und enden mit CR. Per FormKeyUp und FormKeyDown kann ich das abfangen (KeyPreview ist natürlich TRUE) und den Barcode in einem eigenen String speichern, aber das CR wird trotzdem an die Unter-Controls gesendet.

Welche Möglichkeit gibt es, das zu unterbinden?

Dass das per Windows-Hook geht, ist mir klar, finde es aber eher unschön, da ich den Barcodestring lieber gleich in der Form haben möchte. Es geht ja nur darum, dass ich temporär die Weiterleitung des CR an das aktive Control verhindern will. Leider kommt da ja das CR schon an, bevor es an die Parent-Form geleitet wird.

Verwendeter Compiler: Delphi 2007

Gruß,
WiWo

nahpets 14. Dez 2016 12:13

AW: Im Form die RETURNs vollständig abfangen
 
Suchst Du sowas in der Art?
Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  Case Key of #13 : key := #0; end;
end;

WiWo 14. Dez 2016 13:43

AW: Im Form die RETURNs vollständig abfangen
 
Sorry,
ich war auf dem Holzweg.
Der Fehler lag bei mir; ich hatte einen Fall der Key-Ereignisse nicht mitberücksichtigt. Den Code hatte ich mal für ein VFP-Programm geschrieben und später für ein VBnet-Programm; da werden die Tastatur-Events geringfügig anders behandelt und mein Fehler wirkte sich nicht aus.
Ich bin jetzt erst darauf gekommen, als ich dasselbe doch mal mit Key-Hooks durchprobiert habe. Da die garantiert immer zuerst verarbeitet werden, sind die Abläufe klarer nachzuvollziehen, allerdings nicht live im Debugger, sondern nur per Aufzeichnung.

Gruß,
WiWo


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:58 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