AW: QR Code Schreiben - Lesen
wie bekomme ich eigentlich mit, auf welcher COM Schnittsteller sich der Barcodescanner eingenistet hat? Der hängt ja an einer der vielen USB Schnittstellen.
|
AW: QR Code Schreiben - Lesen
Hmm..
Man kann es über die ComPort-Geschichte machen.. Oder nutzt die HID-Möglichkeit.. Hierfür nen Edit auf die Form.. Im OnKeyDown auf #13 prüfen.. und wenn #13 dann Edit.text verwenden und anschließend wieder löschen für den nächsten Barcode.. Somit kann eigentlich jeder USB-Scanner verwendet werden, ob 1D oder 2D.. Fällt dieser aus, kann man den Text (unterhalb des BC mit ausdrucken) aus den Barcode auch von Hand eingeben und mit Enter abschließen. Somit sogar ein Abfallkonzept vorhanden. Und alles ohne sich mit der notwendigen Konfiguration (Com-Port, Baudrate, ext.) der verschiedenen Scanner herumschlagen zu müssen. Ein weiterer Vorteil mit HID ist die Verwendung an ThinClients, wenn die Applikation in einer TherminalSession läuft. Über die Tastatur-Eingabe gehts sogar damit. Dann ist meist der ComPort-Scanner außen vor, da es (leider) immer noch ab und an Probleme mit dem Durchrouten in die Session gibt. |
AW: QR Code Schreiben - Lesen
Solange wie ich ein Editfenster habe ist alles Ok. Da komme ich ja an den Text des Scanners ran.
Ohne Editfenster bekomme ich bei meinen Grundformular das KeyEreignis #13 noch mit aber wo finde ich dann den Text vom Scanner??? Wo wird der gebunkert? |
AW: QR Code Schreiben - Lesen
Zitat:
'Gebunkert' wird ohne Edit gar nicht.. Das müsstest Du schon selber machen. Beispiel:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormKeyPress(Sender: TObject; var Key: Char); private FBarcodeVal : string; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin // Verarbeite den Barcode // Alten Barcode löschen FBarcodeVal := ''; end else begin FBarcodeVal := FBarcodeVal + Key; end; end; end. Denke aber an 'KeyPreview' auf true setzen.. |
AW: QR Code Schreiben - Lesen
Danke für die Antwort.
Problem was aber dann besteht ist, wenn der Cursor gerade in einen anderen Editfeld steht, dass dort auch die aktuelle Eingabe vom Scanne auftaucht. Alle anderen Eingabemöglichkeiten laufend zu sichern um diese dann wieder zu aktualisieren halte ich für nicht so glücklich.
Delphi-Quellcode:
unit Unit1;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls; type TForm1 = class(TForm) Edit1 : TEdit; Edit2 : TEdit; procedure FormKeyPress(Sender: TObject; var Key: Char); procedure FormCreate(Sender: TObject); private pufferstring : string; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin pufferstring := ''; edit1.Text := ''; edit2.Text := ''; end; procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin // Verarbeite den Barcode edit1.Text := pufferstring; edit1.Repaint; // Alten Barcode löschen pufferstring := ''; end else pufferstring := pufferstring + key; end; end. |
AW: QR Code Schreiben - Lesen
Und jedes Mal, wenn ich die Enter-Taste drücke, springt dieser Code an. :stupid:
Außerdem wird der Text dann irgendwo in der Oberfläche eingefügt, da erst am Ende erkannt wird, dass es "vermutlich" ein Barcode war. Habe ich vorher in einem Edit was eingegeben oder aus einem anderen Grund eine Taste gedrückt, wann steht das ebenfalls in dem Edit drin. Also in "allen" Edits/Memos und Co. müsste man den Barcode dann wieder entfernen, wenn er da eigentlich nicht rein sollte, und handelte es sich um ein DB-Control, dann wurde das DataSet auch noch in den EditModus versetzt. War in dem aktiven Control etwas markiert, dann ist nun die Markierung futsch und das Markierte überschrieben/gelöscht. War das Control/DataSet schreibgeschützt, hat es womöglich auch schön geknallt. War eines der Zeichen ein Controlzeichen oder ein Hotkey, wurde eventuell auch gleich irgendwas ausgeführt und/oder der Fokus umgesetzt. Auch Grids/ComboBoxen/... mit AutoSearch sind danach verstellt, wenn sie grade den Fokus hatten. Und wer weiß was noch alles passiert. Sowas kann man nur machen, wenn es "vorher" ein Startzeichen gibt, dann fängt man alle Eingaben ab, bzw. leitet sie um, bis zum Endezeichen. Oder man muß unbedingt sicherstellen, dass bei Scanbeginn der Fokus sich in den richtigen Controls befindet, bzw. sorgt beim Startzeichen dafür. |
AW: QR Code Schreiben - Lesen
Zitat:
Hmm.. Zitat:
Wenn kein EDIT (egal ob TEdit, Grid, DBEdit..) da ist, dann kann da auch nichts in irgend ein Control geschrieben werden !! ;) Davon bin ich in meinem Beispiel ausgegangen! Zitat:
Wenn Du eh ein Edit hast, dann ist das doch wohl überflüssig! Hier sollte der INHALT des 'pufferstring' geprüft werden, denn da steht ja (eventuell) der Barcode-Wert drinnen, dann brauchste nichts mehr mit dem Edit zu machen. Bei uns haben Barcodes (wenn von uns erzeugt) ein festes Format. Was im Übrigen auch für GS1 / HIBC und andere 'standardisierte' Barcode(-Inhalte) gilt. Dass würde dann Zitat:
Wenn ein Edit vorhanden, dann gilt: Zitat:
Bei uns gibt es spezielle Eingabefelder, welche Farblich hervorgehoben werden, damit der User auch aus Entfernung sehen kann 'Ja ich kann jetzt scannen'. ;) |
Dieses Thema wurde am "23. Feb 2017, 10:53 Uhr" von "Daniel" aus dem Forum "Software-Projekte der Mitglieder" in das Forum "Sonstige Fragen zu Delphi" verschoben.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 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