How to generate QR code in FastReport VCL with Delphi/Lazarus code

How to generate QR code in FastReport VCL with Delphi/Lazarus code

In recent years, QR codes have become an everyday part of our lives. They are a two-dimensional barcodes that can be easily read by a digital device and that store information as a series of pixels. They have become widely used in trade, logistics, and production.

Unlike a simple barcode, a QR code is read horizontally and vertically. Thus, they store more data. The ease of recognition and ease of use of QR codes predetermined their popularity. With FastReport VCL you can easily use QR codes in your reports. Let's look аt this possibility more closely.

Launch the report generator designer. Select the "QRCode" component from the pop-up menu of the "Barcode object" tool.

Selecting the “QRCode” component


When added to a page, the QRCode will look like this:

QR-Code in the report


Double click on it to open the 2D barcode editor. This can also be done from the context menu by selecting the "Edit" item:

Barcode editing


This is what the barcode editor looks like:

2D barcode editor


Let's look аt its main functions in detail:

1. In the “General” tab, you can change the size of the barcode, add a signature or rotate it.

2. On the “Other options” tab:

3. In the expression editor, on the “Code” line, you can:

In the “ExpressionPreset” object property, you can select presets for generаting receipts according to the specification of the Swiss code:

Selecting presets for the QR code


You can generate your own QR codes of various types, for this you need to specify a string of a certain format and set it in the Text property.

Let's take a closer look at these types with examples of barcodes and data:

URI is a Uniform Resource Identifier. It is a string to identify various files, documents, images, email, web service, etc.:


EmailAddress – E-mail address: 

EmailMessage – email text:;SUB:FastReport VCL question;BODY:Hello, I have a question about FastReport VCL.;;SUB:FastReport VCL question;BODY:Hello, I have a question about FastReport VCL.;


Geolocation – coordinates for  the real geographic location:




SMS – text message:

SMSTO:(71) 555-4444:Hello, Dolly! I'm fine!

 SMSTO:(71) 555-4444:Hello, Dolly! I'm fine!


Call – telephone number:

tel:(71) 555-4444

tel:(71) 555-4444


Wi -fi – information for connecting to wi-fi:




Let’s create а QR code from Delphi/Lazarus code:

uses frxBarcode2D;
procedure TForm1.Button1Click(Sender: TObject);
 bcQR: TfrxBarcode2DView;
 bcQR := TfrxBarcode2DView(frxReport1.FindObject('Barcode2D1'));
 { Set the barcode type }
 bcQR.BarType := bcCodeQR;
 { Depending on the type you want to use, you need to }
 { leave one line that assigns the text of a certain format }
 { If you want to set url type: }
 bcQR.Text := '';
 { If you want to set EmailAddress type: }
 bcQR.Text := '';
 { If you want to set EmailMessage type: }
 bcQR.Text :=
 ';SUB:FastReport VCL question;BODY:Hello, I have a question about FastReport VCL.;';
 { If you want to set Geolocation type: }
 bcQR.Text := 'geo:-50.737563,-79.490016,120';
 { If you want to set SMS type: }
 bcQR.Text := 'SMSTO:(71) 555-4444:Hello, Dolly! I'' m fine ! ';
 { If you want to set Call type: }
 bcQR.Text := 'tel:(71) 555-4444';
 { If you want to set Wi-Fi type: }
 bcQR.Text := 'WIFI:T:WPA;S:Honeypot;P:youarewelcome;H:true;';


We have looked аt how to use QR codes in FastReport VCL. This component brings more possibilities for using this report generator in modern workflow.