Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi FMX TEdit: nach lesen über Scanner ins nächste Feld springen (https://www.delphipraxis.net/217248-fmx-tedit-nach-lesen-ueber-scanner-ins-naechste-feld-springen.html)

ggscholz 29. Mai 2025 18:41

FMX TEdit: nach lesen über Scanner ins nächste Feld springen
 
Hallo in die Runde,

der Titel trifft es nicht ganz:

Auf einem MDE Gerät mit Android 13 sollen über den integrierten Scanner Barcodes eingelesen werden. Es gibt zwei verschiedene, eine nur mit Ziffern, die andere mit Ziffern, Buchstaben und Punkten. In notepad++ wird nachfolgendes beim Scannen der Barcodes ausgegebn:

Code:
3.1.2.0.A.110.0.0CRCF
155781CRCF
Im TEdit für den Barcode mit Ziffern ist
Delphi-Quellcode:
Edit1.FilterChar := '0123456789'
notiert. Das merkwürdige für mich ist, das der Barcode bestehend aus Ziffern anstandlos zur OnChange Procedur führt, während der Barcode aus Ziffern, Buchstaben und Punkten (der in diesem TEditFeld falsche Barcode) zwar richtig gefiltert im Edit angezeigt wird aber kein OnChange Ereigniss ausgelöst wird.
Auch
Delphi-Quellcode:
Edit1.FilterChar := '0123456789' +#10 +#13;
führt nicht dazu, das CR und LF durchgelassen werden.

Auch Änderungen bei
Delphi-Quellcode:
Edit1.ReturnKeyType
helfen nicht.

Mache ich bei FilterChar was falsch?? Oder muss ich mit einer eigenen Funktion die Eingabe filtern??

Grüße Gerd

QuickAndDirty 2. Jun 2025 12:55

AW: FMX TEdit: nach lesen über Scanner ins nächste Feld springen
 
Man kann da mit Einstellungen spielen
Keyboardtype
KillFocusByReturn

Jedoch wird bei mir OnChange im Tedit erst getrigert wenn der Focus verloren geht.
OnChangeTracking wird bei mir mit jedem Tastendruck getrigert
Ich selbst erfasse jedoch meist alles im OnKeyDown verzeichnis und trigger die selben Methoden beim scannen die im OnKeyDown Ereignis genutzt werden.
Ich weiß ja wenn meine Camera was erkannt hat und ich das in das editfeld schreibe.

Wenn dein Scanner eine Tastatur ist musst du ja im onkeydown nur warten bis du ein Barcode ende erkennst.

In Change und Keydown ereignissen usw... am besten allen code in Thread.ForceQueue(procedure Begin RunbarcodeReady; End ); verpacken.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 Uhr.

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