FastReport String-Teile entfernen

Aus GEVITAS
Wechseln zu: Navigation, Suche

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!

4 Links