FastReport String-Teile entfernen
Aus GEVITAS
Inhaltsverzeichnis
1 Allgemeines
FastReport beinhaltet auch eine paar String-Methoden, mit dem Text-Teile z.B. löschen kann.
2 Problem
Auf einem QR-Code-Etikett soll ein Link zu einem Dokument stehen, das auf einem Cloud-Server liegt.
Der Pfad- und Dateiname kommt aus der Datenbank, beinhaltet aber den Pfad zum lokalen Server. Per Code soll jetzt aus dem lokalen Pfad ein Internet-Pfad gemacht werden.
3 Lösung
- Auf dem Report im FastReport-Designer platziert man...
- ...ein QR-Code-Objekt mit dem Namen "QRCode1"
- ...ein Textfeld (Memo) mit dem Namen "memo1.". Dies ist nur ein Hilfs-Feld und ist nicht sichtbar (Eigenschaft Visible = False)
Man klickt auf das Band "MasterData1" und schaltet links auf "Ereignisse" um. Dann doppelklickt man auf das Ereignis "OnBeforePrint" und kommt damit in den Code-Editor.
Dort schreibt man diesen Code:
procedure MasterData1OnBeforePrint(Sender: TfrxComponent); begin // Den Pfad aus der Datenbank in ein Hilfs-Memo schreiben: memo1.Text := <Test."Protocol">; // Die ersten X Zeichen aus dem Pfad entfernen, so dass nur noch der Dateiname im Memo steht: Delete( memo1.Text , 1 , 27 ) ; // Den Text an das QR-Code-Objekt übergeben: QRCode1.Text := 'http://myserver/pfad/' + memo1.Text; end;
- Hinweis
- Das QR-Code-Objekt darf in diesem Fall keine direkte Datenbank-Anbindung haben (Eigenschaften "DataSet" und "DataField" müssen leer sein!)
- In diesem Beispiel werden die ersten 27 Zeichen aus dem Pfad entfernt, in Ihrem Fall müssten Sie zählen, wie lange der lokale Pfad ist.
- Das geht natürlich nur, wenn der lokale Pfad immer gleich lang ist!