flieger-michl - Sa 08.01.11 09:18
Titel: Standard Tastenbehandlung in Formular ändern
Hallo liebe Entwicklergemeinde,
ich schreibe gerade an einer Barcode gestützten Zeiterfassungssoftware.
Jeder Barcode beginnt mit einer Kennung: M = Mitarbeiter P oder A = Projektnummer K = Kostenart
Nach der Kennung kommt eine beliebige Zeichenkette und CR bzw #13 schließt den aktuellen Barcode ab.
Mein Formular hat u.a. 3 Editfelder Personalnummer, Projektnummer und Kostenart.
Da die Daten des Scanners als Tastatureingaben an das Programm geliefert werden, muß ich also in spezieller Weise auf die Tasteneingaben reagieren.
Dazu hatte ich versucht, die Methode wndproc des Formulares zu überschreiben.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TInputTerminalForm.WndProc(var Msg: TMessage); begin if (Msg.Msg >= WM_KEYFIRST) and (Msg.Msg <= WM_KEYLAST) then begin Memo1.Lines.Add(IntToStr(Msg.Msg)); end; inherited; end; |
Das Problem ist nun, daß nix in Memo1 landet. Kann mir einer verraten, wieso?
Gruß
Michl
Moderiert von
Narses: Code- durch Delphi-Tags ersetzt
Xion - Sa 26.02.11 08:13
Wenn der Scanner Tastatureingaben schickt, dann müsste er ja automatisch in das Memo schreiben, wenn dieses fokusiert ist. Ist das der Fall?
Außerdem ist Msg.Msg meines wissens nach der Message-Typ, nicht der gesendete Buchstabe.
Edit: Das wäre wohl das richtige:
http://msdn.microsoft.com/en-us/library/ms646276%28v=vs.85%29.aspx
jaenicke - Sa 26.02.11 08:17
Weshalb in der WndProc des Formulars nichts ankommt? Weil die Eingabe an das fokussierte Control geschickt werden wie
Xion schon geschrieben hat. Und das wird nicht das Formular sein vermute ich.
Jedenfalls reicht es, wenn du KeyPreview des Formulars auf True setzt. Dann kannst du einfach das OnKeyPress Ereignis des Formulars benutzen. ;-)