GEVITAS CopyScan Formular mit QRCode
Inhaltsverzeichnis
1 Allgemeines
GEVITAS ScanCopy geht davon aus, dass die Datei-Namen der gescannten Formulare bestimmte Codierungen beinhalten. Diese ermöglichen es, die Dateien in die vorgesehenen Ordner zu verschieben und Datei-Verknüpfungen in der Datenbank (z.B. zu einem bestimmten Auftrag, einem Kontakt usw.) herzustellen.
Am Einfachsten ist es dabei, auf dem Formular einen QRCode unterzubringen, der die Codierung beinhaltet.
Das geht mit FastReport ganz einfach. Wie, wird hier beschrieben.
2 Das Formular
So könnte ein Formular mit einem QRCode aussehen:
In diesem Formular befindet sich im Fuss (auf jeder Seite) ein QRCode, der die oben beschriebene Codierung beinhaltet.
Die Software des Dokumenten-Scanners muss diesen QRCode erkennen und daraus den Dateinamen des Dokuments erstellen.
3 Designer öffnen
Starten Sie REFLEX und öffnen einen Auftrag oder einen Lieferschein, je nachdem, welches Formular Sie ändern wollen.
Klicken Sie auf Drucken. Das Druckfenster für das ausgewählte Formular wird angezeigt. Klicken Sie auf den Button Desginer.
- Sie benötigen das Zugriffsrecht "ReportDesigner", um den Designer öffnen zu können!
4 QRCode einfügen
Navigieren Sie zu dem Bereichen, in den der QRCode eingefügt werden soll, z.B. den PageFooter (Seitenfuß).
Klicken Sie in der Objekt-Symbolleiste links auf das Objekt Barcode, wählen "QRCode" aus und fügen das Objekt an der gewünschten Stelle ein.
Beispiel:
Im Objekt-Inspektor links kann man die Eigenschaften für das QRCode-Objekt einstellen. Die wichtigsten Eigenschaften sind:
Eigenschaft | Erklärung |
---|---|
BarProperties | Fehler-Toleranz (low, medium, high):
|
BarType | Für QRCode auf "bcCodeQR" stellen. |
ShowText | Text anzeigen:
|
Text | Der Text, der im QRCode steht. Dieser wird per Code bestimmt, s.u. |
Zoom | Hiermit kann man die Größe des Objekts einstellen. Standard ist 1, empfehlenswert ist 0,7. Wenn Sie den Zoom einstellen, führen Sie unbedingt Leseversuche durch. Dazu genügt ein handelsübliches Smartphone mit einer entsprechenden App. |
- Hinweis
- Die Größe des Objekts ergibt sich automatisch aus dem Inhalt! Im Gegensatz zu anderen Objekten können Barcode-/QRCode-Objekte nicht einfach durch Ziehen mit der Maus in der Größe geändert werden.
5 Inhalt des QRCodes festlegen
Der Inhalt des QRCodes wird nicht fest angegeben, sondern beim Ausführen des Reports dynamisch festgelegt.
Dazu wird ein sog. "Ereignis" genutzt. Ein Ereignis ist ein Code (also eine Art von Programmierung), mit der man den Inhalt des QRCodes festlegen kann.
Um den Code einzugeben (oder zu ändern), klicken Sie das QRCode-Objekt einmal an. Dann klicken Sie im Objekt-Inspektor links auf "Ereignisse" und darin doppeklicken Sie auf das Ereignis "OnBeforePrint". Dieses Ereignis wird abgearbeitet, bevor das QRCode-Objekt gedruckt (oder angezeigt) wird.
Geben Sie diesen Code ein:
procedure Barcode2D1OnBeforePrint(Sender: TfrxComponent); begin Barcode2D1.Text := ' Packliste F(PL)' + ' ANR(' + IntToStr(<AuftragsKopf."AuftrNr">) + ')' + ' AS(' + IntToStr(<Page>) + ')' + ' GS(' + IntToStr(<TotalPages>) + ')' + ' D(' + FormatDateTime('yyyymmdd',<Date>) + '_' + FormatDateTime('hhmmss',<Time>) + ')'; end;
Dieser Code legt den Inhalt des QRCode ("Barcode2D1.Text") fest. Die einzelnen Bestandteile werden mit + miteinander verknüpft. Dadurch ergibt sich eine Zeile mit dem entsprechenden Inhalt. Die Zeilenschaltungen im Code sorgen nur für bessere Lesbarkeit des Codes und haben keine Auswirkung auf den Text.
Die einzelnen Bestandteile:
Barcode2D1.Text := ' Packliste F(PL)'
Dieses Formular ist eine Packliste (Ladeliste). Deshalb wird die Codierung "F(PL)" verwendet.
Einzelheiten zur Codierung stehen hier.
+ ' ANR(' + IntToStr(<AuftragsKopf."AuftrNr">) + ')'
Dieser Code für die Auftragsnummer <AuftragsKopf."AuftrNr"> in den Text ein. Da dieses Feld ein Zahlenfeld, muss man es in einen Text ("String") umwandeln. Dazu wird die Funktion IntToStr verwendet. Die wandelt eine Zahl in einen Text um.
+ ' AS(' + IntToStr(<Page>) + ')'
Trägt die aktuelle Seitennummer <Page> in den Text ein. <Page> ist eine interne Variable, die von FastReport zur Verfügung gestellt wird.
+ ' GS(' + IntToStr(<TotalPages>) + ')'
Trägt die Gesamt-Seitenanzahl <TotalPages> in den Text ein. <TotalPages> ist eine interne Variable, die von FastReport zur Verfügung gestellt wird.
+ ' D(' + FormatDateTime('yyyymmdd',<Date>) + '_' + FormatDateTime('hhmmss',<Time>) + ')';
Trägt das Datum un die Uhrzeit in den Text ein. Da nicht die Standard-Darstellung "TT.MM.JJJJ" verwendet werden soll, wird die Funktion FormatDateTime verwendet. <Date> und