ReportWorkshop demos for FireMonkey

Report Workshop 6 – FireMonkey

We have released ReportWorkshop 6.0 – rich text reporting components based on our TRichView editor.

This update is free for customers who ordered ReportWorkshop in 2022, 2023, and 2024.

Trial versions can be downloaded here:

TRichView + ReportWorkshop FireMonkey trial setup became large (more than 500 Mb, and much more when unpacked), because it includes precompiled files for all supported platforms.
So, we decided to provide separate trial downloads for RAD Studio 11 and for RAD Studio 12 additionally.
The trial version for RAD Studio 11 is larger, because more precompiled files are needed to support Community Edition.

Main changes after the last update:

  • FireMonkey (all platforms)
  • report generation in a background thread

Other significant changes after v5.0:

  • Lazarus for Windows version
  • add-on for barcodes and QR codes

See version history: … istory.htm


FireMonkey version of ReportWorkshop supports the same platforms as FireMonkey version of TRichView (including all platforms in RAD Studio 11 and 12).

What is ported:

In other words, everything is ported, except for actions for creating user interface for report editing.
They will be ported later, after porting RichViewActions.
In this version, you can generate reports in code, or create a report editor using VCL (or Lazarus) version of ReportWorkshop, or implement your own user interface for editing report templates.

Note 1: I did not check if other third-party data access components support FireMonkey. If you want using some third-party data access components in FireMonkey, let me know.

Note 2: If you use data visualizers on mobile platforms, I highly recommend using Skia4Delphi.

Here are fragments of screenshots, zoomed x 3 to make difference more noticeable:

Data visualization in ReportWorkshop for Android, zoomed x 3

FireMonkey demo projects

The following demo projects are available for FireMonkey

LiveBindings\AdapterBindSource and LiveBindings\PrototypeBindSource

These projects show how to use LiveBindings to provide data for reports.


The demo uses ‘restaurants’ collection from ‘test’ MongoDB database to create a report.
This collection is created by “Object Pascal\Database\FireDAC\Samples\DBMS Specific\MongoDB\Restaurants” demo included in RAD Studio.

FireDAC.IB – 7 demos

A set of FireDAC demos that use InterBase.
The demos use “IB” driver in Windows, and “IBLite” in other platforms.
These are analogs of VCL demos (except for ReportEditor” demo, it is not available because requires actions).
Also, in ReportMaker demo, IB/IBLite driver is hard-coded (VCL version uses the FireDAC settings dialog, where the user can select another driver; this dialog is not available in FireMonkey)

FireDAC.SQLite – 7 demos

A set of FireDAC demos that use SQLite.

Analogs of the “IB” demos, but use SQLite tables.
I created SQLite versions of databases (dbdemos and fables), they are included (both in FireMonkey and VCL versions)

Known problem: these demos were created to be compatible with RAD Studio from XE8 to 12. Unfortunately, there are some compatibility problems between versions of RAD Studio. All demos are supposed to link SQLite statically. However, in new versions of Delphi, if you compile and run these demos for the first time, they may say that SQLite dynamic library is not available. Just compile and run them again to fix this problem.

Report generation in a background thread

Generating in the main process

If you need to generate a small report, just call RVReportGenerator.Execute.
But if a report is large, generation may take some time. If you do nothing, your application will be frozen while a report is being generated.
To provide some feedback to the user, or to allow aborting the operation, you can use OnDataQueryProgress event. In this event, you can update a progress bar, and call Application.ProcessMessages to unfreeze the application.

However, Application.ProcessMessages is not cross-platform, so this is a bad solution for FireMonkey. Also, for very large reports, this event may be called not frequently enough, so the application responds to user actions slowly.

Generating in a thread

ReportWorkshop 6 includes a new feature: report generation in a thread.
Call RVReportGenerator.Execute with the parameter UseThread = True (this parameter is optional).
In this mode, this method just starts a report generation thread, and exits.
When the report generation is complete, OnGenerated event is called.
This method has advantages:

  • it is cross-platform
  • user interface is responsive when generating reports (and you can, for example, display some wait animation)

Note: just like with using Application.ProcessMessages, you must hide the target TRichView while a report is being generated, to prevent its redrawing until it is not ready.

Changes in demo projects

All VCL ReportEditor demos where changed to generate reports in a background thread.
Some FireMonkey demos (for example, ReportMaker, Mongo, PrototypeBindSource) use a background generation too.

To-do: to update Lazarus report ReportEditor demos too.

Share this article