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: https://www.trichview.com/download/
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: https://www.trichview.com/help-report/v … istory.htm
FireMonkey
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:
- report generation, including:
- TRVReportGenerator component
- TRVReportDBDataProvider component (providing data from a collection of any TDataSet components)
- TRVReportBindSourceDataProvider component (providing data via LiveBindings)
- data visualization
- localization of error messages, number-to-word function, and other report-related strings
- barcode and QR code extension
- FireDAC, FireDAC MongoDB, DBExpress, IBObjects data providers.
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:

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.
MongoDB\Restaurants
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.