The latest public version of the Kryvich's Delphi Reporter can be download here:
https://github.com/Kryuski/kryvich-delphi-reporter
Previous releases are available on this site, see History.
Includes source code and demo project with RTF & HTML templates.
Newest version: 3.2
March 3, 2025
Kryvich's Delphi Reporter 3.0 (September 13, 2013)
[+] Support for templates and reports in XML format. For ex. Excel 2003 XML format.
[*] When saving to HTML & XML formats, a tag value is converted to UTF-8 format.
Kryvich's Delphi Reporter 2.0 (January 7, 2012)
[+] Support for Delphi XE2.
Kryvich's Delphi Reporter 1.0.2 (January 24, 2009)
[+] Support for aggregated fields.
Kryvich's Delphi Reporter 1.0.1 (June 11, 2008)
[+] Support for memo fields (TMemoField, TWideMemoField).
Kryvich's Delphi Reporter 1.0 (August 14, 2007)
The reporter creates reports based on templates.
A template is a regular RTF, HTML, XML or text file that contains special tags.
A tag is a command for the reporter. For a RTF template, tags must be enclosed in curly brackets “{}”. For a HTML, XML and other templates, tags must be parenthesized with “\{” and “\}”.
Uses RTF, HTML and XML templates
Creates reports in RTF, HTML and XML formats (for ex. Excel 2003 XML format)
Direct access to RTF files (MS Word not required)
Direct access to Excel 2003 XML files (MS Excel not required)
Gets data from any TDataSet descendant (loops are used to iterate over datasets)
Nested loops (datasets) are supported
Free and open source software licensed under the GNU Lesser General Public License v3 or later (see lgpl-3.0.html)
Tested with Delphi 2007 - 12.1. Supports all editions including the Community Edition
This is a list of template tags that Kryvich's Delphi Reporter can recognize and evaluate:
Any other tag in a template that cannot be evaluated by Reporter itself must be populated in the OnGetCustomTagValue event handler.
The distribution includes a demo project that demonstrates the reporter's work. To show various techniques, I used several TDataSet descendants as data sources:
TClientDataSet, which loads data from XML files.
Several TClientDataSet objects linked by master-detail relationships.
TADOQuery associated with an MS Access database file (.mdb).
The source code for this demo project is also included.
The demo reports are generated based on the DBDEMOS database that comes with Delphi. Here is a list of the generated reports (in order of increasing complexity):
Simple Customer List Report.
Invoice Report.
Order History Report.
Part Sales Report.
Please ask. My e-mail can be found in File_Id.diz, which is included in the distribution.
The plan for future versions of Kryvich's Delphi Report includes, among other things, the following features:
Simple arithmetic operations in tags. For ex. {Items.Qty*Parts.ListPrice*(100-Items.Discount)/100}.
Named tags: Tags with assigned names that can be used in other tags, similar to database fields. For example, a named tag {AnnualSales=Sum(PartSales.Amount)}, which can then be used in the tag {Max(AnnualSales)} (see the next feature - aggregates for custom tags).
Adding aggregates for custom tags populated via OnGetCustomTagValue. For example, we could write {Sum(PartTotal)}, see Invoice Report Demo.
…Any suggestions?
Further questions, suggestions, comments, feature requests, error reports, source fragments and modifications are very welcomed! You can find my e-mail in File_Id.diz included in distribution kit.