Reporting Lazarus

A universal LCL set of components with source codes for generating reports and documents on Lazarus for Linux and Windows

v. 2025.1.5

What reports can Reporting Lazarus do?

Practically any: invoices, financial reports, product catalogs with color profile support, restaurant menus, sales details, questionnaires with electronic forms, airline tickets, utility bills, and much more. If you have data that needs to be made visually understandable, FastReport is the perfect solution for you.

Features and Benefits Reporting Lazarus

Lots of components
A variety of elements are available for building reports in the designer: from text and images to tables and interactive maps.
Quick access to the report and data structure
From the report tree and properties tree, you can edit the report structure, parameters, and filters, as well as data sources with global styles.
Safety
Protect your templates and reports with strong data encryption. Adapt all source codes to suit your solutions.
Flexible and open architecture
If FastReport's functionality is not enough for you, you can improve it by creating and connecting your objects (export filters, databases) to your reports.
Graphics core
GDI and GTK are used to create graphic elements, render text, and manage graphics.
Source code
This set of components includes FastReport source codes. Maximum convenience for companies wishing to adapt the code to their needs.

The template designer in your application

A powerful modern editor includes a large set of tools for visual design and modification of report templates. Our flexible architecture allows you to create your editors for both existing objects and new ones. A template designer can be included in your application to provide users with their report design. Localization is supported for more than 30 popular languages of the world.

Reporting Lazarus is a band-oriented report generator. A rich set of bands allows you to build reports of any type: list, master-detail, report with grouping, multi-column, master-detail-detail, and others. If you need to create many reports that contain the same elements (header, footer, company details, logos), then you can collect common elements into a base report and inherit all other reports from it. We also support subreports.

The template designer in your application

Data processing

Your report can contain data from tables, queries, and database connections directly from the report. Reporting Lazarus supports data sorting and filtering, master-detail relationships. Everything can be configured with a few clicks. The suite also contains a script engine that supports PascalScript, C++ Script, BasicScript, and JScript.

The report may contain dialog forms to request parameters before the report is built. Dialog controls support the ability to connect to data and then filter it. Filtering can be added to absolutely any report; it does not require writing any code.

Data processing

Preview and print

The pre-prepared report can be examined in detail in the Report Viewer's preview window. Our component supports working with parameters, multi-level detailing, and interactive reports. You can define the reaction to a mouse click on an object in the preview window. For example, you can build and display another report that shows detailed information about the object the user clicked on.

Additional printing settings. The following options are available to you: cutting large report pages into small ones, printing several small pages on one large page, and printing in a given format with scaling. Do you need to print a report containing A3 pages on a regular A4 printer? Now, this is not a problem!

Preview and print

Exports to convenient formats

Filters for exporting the finished report to many formats: PDF, RTF, XLSX, XML, DOCX, TXT, CSV, Excel OLE, PowerPoint, HTML, MHT, XPS, JPEG, BMP, PNG, Open Document Format (ODT, ODS, ODP), XAML, Scalable Vector Graphics (SVG), ZPL, etc.

Reporting VCL allows you to quickly convert reports with editable fields (such as text fields, combo boxes, checkboxes, radio buttons, and graphics fields) into PDF documents without connecting additional libraries. Save your reports in popular formats: PDF 1.4-1.7, PDF/A-1a, PDF/A-1b, PDF/A-2a, PDF/A-2b, PDF/A-3a, PDF/A-3b, which are secure, accessible and reliable.

Exports to convenient formats

Ultimate VCL

This set of components is part of the Ultimate solution, with which you can create your business projects on all familiar VCL, Lazarus, and FMX platforms. Additionally, the package includes FastScript for fast processing of scripts of any complexity, as well as the visual SQL query builder FastQueryBuilder. In addition, you will have access to client-server reporting tools on VCL and Lazarus.

Delivery options

Features
from $1,299
Buy
from $499
Buy
FastReport Engine
VCL components
FMX components
Lazarus components
OLAP features
OLAP aggregation functions
Data connections
Reporting features
Report objects
Barcodes
Charts
Printing
Export in formats
Source Code
Convertors from
Transports

Resent articles

November 20, 2024

Localization and Language Switching in FastReport VCL

In today's world, the ability to provide your software to customers around the globe is of great importance. Therefore, FastReport VCL supports about 40 of the most widely spoken languages for localizing the user interface.  Starting from version 2023.2, the localization mechanism in FastReport VCL has been significantly improved — it is no longer necessary to recompile in order to translate FastReport into other languages. The localization package is included in all FastReport VCL delivery kits. Localization is performed "on the fly" by selecting the desired language in the Report Designer from the "View — Language" menu. Moreover, you can manage the interface language of FastReport VCL directly from the code!     Checking and Installing Localization Packages  For localization to work correctly, it is necessary for the IDE to have the localization packages (frxLanguageXXX) and the localization controller package (frLocalization) installed. In the Windows operating system, localization packages are automatically installed for the Delphi and Lazarus IDEs. If the localization menu is not available, you need to check if these packages are installed in the IDE. In Delphi, you will see the following window: The localization menu in Lazarus looks as follows:   If any of the translation packages are not required, they can be removed from the development environment.     Working with TfrLocalizationController and Language Selection As mentioned earlier, changing the language in FastReport within the report designer is very simple. Go to the "View — Languages" menu and choose the desired language. To connect FastReport localization to the application, you need to use the TfrLocalizationController component. Simply place it on the main form of the application. Next, for Delphi, right-click on the component, and then in the dropdown menu, select the language that you need FastReport to support in your program:   After this, you need to select the language for the TfrLocalizationController component that will be loaded by default when the application starts. You can also add the module containing the necessary localization to the uses section of the main form. It should be noted that by default, FastReport VCL uses the English language, so if you only need English, there is nothing else to do. To connect localization in Lazarus, you need to add the language package to the project and then add the module for that language.     Changing Language from Code In some situations, it may be necessary to manage FastReport VCL localization from the program code. This is done as follows:   frLocalizationController.Language := ‘German’; The following code sets the language to German. Do not forget that your program must be compiled with the language package you wish to switch to. You can find out which language packages the program is compiled with using the code below. To do this, you need to include the Types module, place TButton and TMemo components on the form, and write in the Button.OnClick event handler: procedure TForm1.Button1Click(Sender: TObject);var D:TStringDynArray; I: Integer;begin  Memo1.Lines.Add('Default Lang: '+TfrAvailableLanguagesController.GetDefaultLanguageName);  Memo1.Lines.Add('Current Lng: '+frLocalizationController1.Language);  Memo1.Lines.Add('Suppotred languages:');  D:=TfrAvailableLanguagesController.GetLanguages;  for I:=Low(D) to High(D) do begin    Memo1.Lines.Add(D[I]);  End;end;    Please note that the English language is not included in the list of supported languages, but it is always available by default.     Editing Localization via the Localizer You can open the Localization Editor as follows:   In the Delphi IDE, go to the menu "Tools… - Localization Editor…"   In Lazarus, navigate to the menu "Services - Localization Editor…" You can invoke the "Localization Editor" from your program using the code below. However, this method is not available in all versions.   frLocalizationController1.ShowLocalizationEditor; Purpose of controls in the localization editor: open the *.xml file with translation save the *.xml file with translation save the translation file with a specified name  undo the last action   redo the undone action   set the translation language filter records by mask   clear the filter   show only translated records show only untranslated records   The “Localization Editor” allows you to translate FastReport VCL resources into various languages line by line. In the center of the editor is a grid with the translatable values.   The first column displays the identifier of the element that is to be translated. It is always a string, even though some rows may contain numbers, as their string representation is used. The second column shows the original value of the element in English. The third column contains the translated value of the element for another language. Let's move on to the principle of how the localization editor works. Upon loading, the editor checks which localizations are available to the application it is embedded in. It then populates the list of available languages (a combo box for entering the target language). The currently set localization is active for editing. You can choose and edit the translation for any of the available languages and save it to an XML file. If you already have an XML file with translations, you can load it for editing. In the localization editor, you can switch between display modes. For example, you can show only those elements whose translation matches the original in English, or conversely, show only those elements whose translations differ from the English version. However, it should be noted that not all elements need to be translated. You can apply a filter to the entries in the grid. A grid element is displayed only if the filter value exists in any column. You can also sort the grid in both ascending and descending alphabetical order by clicking on the header of any column. If you have modified the translation file, you can connect it to the application instead of the standard one. To do this, you need to include the frResources module in the uses clause using the following code:   frStringResources.LoadFromFile('mylanguage.xml'); We recommend restarting your application after editing files for the correct display of all translated resources. It should also be taken into account that the loaded translation immediately becomes active but will only work until the first switch of the language. Upon switching back to that same language, the localization will be pulled from the resources connected to the program. Additionally, you can compile the resource with the translation file yourself. Place it in the directory with the corresponding language module and use it in your program. To have this translation appear in the IDE, run the installer and select the Recompile mode, or simply recompile the package for the language you need. In Lazarus, you will need to rebuild the IDE afterward; in Delphi, you will need to restart the environment. If you want your translation to be retained after each update, you can send the localization file to us at support@fast-report.com. We will review the received file and add it to the installer.
Read
October 28, 2024

How to Set Up WSL 2 for Working with FastReport and FastCube

Software developers have long pondered the question, "How could we run Linux applications directly in Windows, without needing to use a separate virtual machine?" The WSL technology provides a potential answer to this question. The history of WSL began in 2016. At the time, the implementation involved running Linux binary executables using system calls within the Windows kernel. The first version also included emulation of the Linux kernel through a layer to translate system calls. The second version of WSL, released in 2019, featured full compatibility with system calls, a fully functional Linux kernel, support for GPUs, and support for Linux applications with a graphical user interface. In this article, we will explore how to set up WSL 2 for working with FastReport and FastCube components in Lazarus for Linux.     Installing and Setting Up Ubuntu 24.04 in WSL 2 Launch the Windows command line as an administrator. To display a list of all available Linux distributions, you need to enter the command in the Windows command line and press Enter: wsl --list --online or wsl -l -o To install Ubuntu 24.04, run the following command: wsl --install -d Ubuntu-24.04 After installing the distribution, you will be prompted to create a user account and password. To install Ubuntu 24.04, you only need to run a few commands. The Ubuntu 24.04 terminal is available from the Windows Start menu after installing the distribution. You can also launch the Linux kernel and enter the Ubuntu 24.04 terminal using the command from the Windows command line: wsl -d Ubuntu-24.04 After installing Ubuntu 24.04, you need to update the packages. To update the installed packages, run the following commands in the Ubuntu 24.04 terminal: $ sudo apt update && sudo apt upgrade && sudo apt dist-upgrade Enter the user password and press Enter. Wait for the request to agree to update the packages. Enter Y and confirm by pressing Enter. To install Nautilus, run this command in the terminal, and then enter the following command to directly launch Nautilus. $ sudo apt install nautilus -y $ nautilus After installation, the Nautilus file manager is available from the Windows Start menu.     Installing and Setting Up Linux 11 Starterkit in WSL 2 The WSL 2 subsystem allows you to use any Linux distribution by importing it from a tar file. Run the Windows command line as administrator. Run the command to download the Linux rootfs image to the root of the C\: drive: curl -o C:\alt-p11-rootfs-systemd-x86_64.tar.xz https://ftp.altlinux.org/pub/distributions/Linux/p11/images/cloud/x86_64/alt-p11-rootfs-systemd-x86_64.tar.xz To import the distribution into WSL 2, you need to run the command in the Windows command line: wsl --import Linux-11 C:\Linux-11 C:\alt-p11-rootfs-systemd-x86_64.tar.xz After importing, the Linux hard disk image file will be located in C:\Linux-11\ext4.vhdx. In the Windows command line, run the command to display a list of all registered distributions. And then run the newly imported Linux-11 distribution wsl -l -v wsl -d Linux-11 After starting Linux, a terminal will open. In the WSL configuration file for this distribution, you need to enable the use of systemd: # echo -e "[boot]\nsystemd=true\n" > /etc/wsl.conf In order for systemd to work, you need to stop and restart the distribution. To do this, use the following commands: # exit wsl -t Linux-11 wsl -d Linux-11 To update packages, you need to run the following command, then wait for the request to agree to update packages. Enter Y and confirm by pressing Enter. # apt-get update && apt-get dist-upgrade To ensure correct font display, you need to install the package:   # apt-get install fonts-ttf-ms To install and run Lazarus, you need to download the command-line utility make, then install the Free Pascal compiler and Lazarus IDE:   # apt-get install make # apt-get install fpc && apt-get install fpc-src # apt-get install lazarus Installation is complete. To launch Lazarus, run the command: # startlazarus     Installation of FastReport for Application Development in Linux Before starting the installation of FastReport and FastCube components, you need to download the installation packages. In the Linux-11 terminal, run the command to install wget, then confirm your actions by entering Y and pressing Enter.   # apt-get install wget Download the trial versions of the FastReport and FastCube packages:   # wget https://www.fast-report.com/public_download/fr.vcl/fast_report-trial.rpm # wget https://www.fast-report.com/public_download/fr.vcl/fast_cube-trial.rpm To install FastReport, run the command in the terminal:   # apt-get install ./fast_report*.rpm Before installing the FastReport packages, you need to compile the packages included with Lazarus and install additional libraries: # lazbuild --build-ide= --add-package /usr/lib64/lazarus/components/tachart/print/tachartprint.lpk # lazbuild --build-ide= --add-package /usr/lib64/lazarus/components/tachart/tachartlazaruspkg.lpk # apt-get install sqlite3 libsqlite3-devel After that, sequentially run the following commands to compile the FastReport packages:   # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/fs_lazarus.lpk # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/fr_lazarus.lpk # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/frxe_lazarus.lpk # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/frCS_lazarus.lpk # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/frxchartlazarus.lpk # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/frxlazdbf.lpk # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/frxSmartMemo_Laz.lpk # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/fqb*.lpk # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/frxlazsqlite.lpk # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/frxPDFlazarus.lpk     Installation of FastCube for Application Development in Linux Now let's move on to installing FastCube. Run the following command in the terminal: # apt-get install ./fast_cube*.rpm Then sequentially run the following commands to compile the FastCube packages:   # lazbuild --build-ide= --add-package /usr/share/FastCube*/Lpks/fcxScript.lpk # lazbuild --build-ide= --add-package /usr/share/FastCube*/Lpks/fcxLazarus.lpk # lazbuild --build-ide= --add-package /usr/share/FastCube*/Lpks/fcxCharting.lpk # lazbuild --build-ide= --add-package /usr/share/FastCube*/Lpks/fcxprint.lpk # lazbuild --build-ide= --add-package /usr/share/FastCube*/Lpks/fcxprintTee.lpk # lazbuild --build-ide= --add-package /usr/share/FastCube*/Lpks/fcxexport.lpk     Compiling and Running FastReport Demo in Lazarus At this point, the installation of FastReport and FastCube is complete. Finally, you can try to compile and run the FastReport Demo. To launch Lazarus, run the command in the terminal:   # startlazarus --skip-last-project In the Lazarus main menu, open the "Project" -> "Open Project..." option. In the dialog, select the project:   /usr/share/FastReport - Trial/Demos/FPC/FastReport/FastReportDemo.lpi After opening the project, press the F9 key to compile and run. This concludes the detailed setup of WSL 2 for working with FastReport and FastCube components in Lazarus for Linux. For any questions, please contact our technical support at support@fast-report.com. Enjoy using it!
Read
December 11, 2023

New S3 transport (Amazon) in FastReport VCL

In this article, we will explore the new S3 transport. Functionally, S3 differs significantly from what most people are used to working with, so at the beginning of the article, we will take a detailed look at its main features. Important! For the HTTPS protocol to function properly, the following OpenSSL libraries are required: libssl-3.dll and libcrypto-3.dll. These libraries can be found in the directory with the main demo application. They need to be copied to the application's folder or the system directory. What is it? S3 is not a file storage like Dropbox, Google Drive, Mega, and others. S3 is object storage. And first of all, we need to understand the difference between these two concepts. File storage has the usual hierarchical (tree) structure. That is, familiar directories (folders) in which other directories and files are stored. Object storage is relatively new (the oldest are now about 20 years old). They differ slightly in their implementations, so most of the features will be common, but there will be some that only apply to S3. All object storages are "flat," meaning they do not have a hierarchical structure, although they can "imitate" it. The first entity you will encounter when starting to work with S3 is Bucket. The closest analogy is “Map” in many programming languages, where data is requested by key. A bucket can only store files within itself, but not other buckets. Let's imagine the bucket more clearly. Bucket Key Data video.mp4 Data text_file.txt Data code.pas Data Using the key, you can get the metadata corresponding to it and interpret it yourself as you require. Much more interesting is the imitation of the hierarchical folder structure in such a system. Bucket Key Data video.mp4 Data folder1\text_file.txt Data folder1\video.mp4 Data folder1\folder1_1\video.mp4 Data folder2\text_file.txt Data folder1\ Empty folder1\folder1_1\ Empty folder2\ Empty Certain "folders" are the same objects as files. They are simply colored differently for visual clarity. However, they have one distinguishing feature—a slash (\) at the end of the key. Often, these "folders" do not contain any data (although they can). To view the contents of the "folder" folder1, we need to filter by the key prefix "folder1\". But what is more interesting is deleting "folders." If we try to delete the "folder" folder1 in the Web GUI, some services will allow it, but others will give us an error saying "cannot delete the non-empty folder." If we delete a single record with the key "folder1\" through the API, most GUIs will stop rendering that specific "folder." We will also be unable to access it, but, in reality, the files inside that "folder" will still exist. Once we create a "folder" named folder1 again, it will already contain the forgotten files. The key has very few restrictions and, for example, it can be something like "////." These will be "folders" with empty names.   Why is object storage better than file storage? 1. Object storage is significantly cheaper. Each object is not tied to a specific device, so object storage is easily expanded to the required volume. You can rent a petabyte (about 1,000,000 gigabytes) worth of object storage quite easily. 2. Object storage has a very fast search. But naturally, object storage is best used for unstructured (non-tree) data. New authentication system All previous transports worked with the OAuth 2 protocol. S3, in theory, can work with OAuth 2 as well, but it has its built-in authentication system in its API. OAuth 2, using the Client ID and Secret ID, obtained a token that lived for a certain amount of time and could sign any requests. The internal authentication of S3, using the same Client ID and Secret ID, generates a new disposable token for each operation using SHA256HMAC based on about 30 variables (including token creation time, required operation, and so on). The server only verifies the correct generation of the token, and if the token received by the server matches the one generated by the server itself, the operation is performed. After that, the token cannot be used anymore. AWS S3 Although the transport is named "TfrxS3IOTransport," clearly referencing AWS S3 (Amazon Simple Storage Service), its API has been copied by many object storage systems (which can be loosely referred to as S3-like), so this transport allows you to work with not only Amazon's service. Adding transport to the application and its configuration  At the very beginning, you need to add the appropriate component from the “FastReport VCL Internet transports ” tab.   You can use the context menu on a component. It will establish the connection directly from the development environment. Click on the "Edit connection" submenu.   S3 connection dialog When you need to open or save to a file using transport, the following standard authorization dialog will be available to you (if there was no authorization previously). Let's look at all the unique fields of this form: Server URL—URL used in the API. To find the URL, you need to read the documentation; for AWS S3, it should be “s3.amazonaws.com” by default. Client ID—public key for authorization (often called Access Key). Secret ID—secret key for authorization (often called Secret Access Key). Region—you need to read the documentation for possible region values. Sometimes, there are unusual requirements: for example, in AWS S3, you can only request a list of buckets with the “us-east-1” region. Bucket—in order not to manually select a bucket each time, you can specify it in this field; sometimes buckets are characterized by a specific region. Bucket style—There are 2 types of specifying a bucket: path style (aws.s3.com/bucket) and virtual hosted style (bucket.aws.s3.com. "Path style" is considered outdated because, through a specific DNS, there can be multiple requests to different buckets, which can create additional load. Some services support both types, some support only one, and some can be configured for different situations. You can read about this at the following link. If the connection is successful, you will see the standard FastReport VCL file browser (the screenshot below shows a list of files inside the bucket). This completes the connection setup successfully. Now you know how to connect to S3 in FastReport VCL. It remains only to note the last nuances of our implementation. Our team has not implemented creating and deleting buckets. So far, buckets are visually no different from folders (in our first version of the GUI), as it would be too risky. Also, deleting a folder along with its contents has not yet been implemented. Also, the feature of uploading large files in parts is missing (recommended for files larger than 100 megabytes). This transport has many configuration details and nuances, but it can be an optimal alternative to file storage in certain cases.
Read
Fast Reports
  • 800-985-8986 (English, US)
  • +31 97 01025-8466 (English, EU)
  • +49 30 56837-3928 (German, DE)
  • +55 19 98147-8148 (Portuguese, BR)
  • info@fast-report.com
  • 66 Canal Center Plaza, Ste 505, Alexandria, VA 22314

© 1998-2025 Fast Reports Inc.