Printing is a normal part of most applications, but far too convoluted for many developers. The amount of work necessary to add printing of lists and reports to an application often seems daunting, and there are many pitfalls. Here, I come to the aid, with a package containing a plug-in report generator working with template files, a SDI-demo, a plug-and-play report editor for the template files, as well as a demo of the latter. And documentation! The code is intended either for use as-is in your own applications, or as a
CReportEditor as well.
ReportCreator also contains a ruler that can be ripped out and used with other
CDiagramEditor-derived works. This is an exercise left to the reader, however.
The documentation contains docs on the package structure.
ReportCreator is an editor for the report generator template files. It's first and foremost a vector editor, letting you draw fields on screen with all the features of
CDiagramEditor, such as panning, zoom, multiple selects, and much, much more.
It allows you to work in pixels, centimeters or inches as is befitting for a printer-oriented application. The documentation contains detailed information.
If you want to add the package(s) or parts of them into your own code - commercial or not, you are completely free to do so. The code comes with the TISATAAFL-license, There Is Such A Thing As A Free Lunch, and you are free to modify, rewrite, resell or do whatever you feel like with the code. You are explicitly allowed to remove my comments in the source and headers, replacing them with your own. You don't have to acknowledge me, neither in code, nor in documentation or the finished application if you should use the code in a commercial application.
First of all, a few bug corrections:
- Fixed resource leak in
CCornerBox::OnPaint in the report creator (alex_br).
- Fixed silly line-thickness bug in draw object line thickness/brush creation (lordly).
As well as a few others that was removed as a spin-off from other modifications.
There are also quite a few changes:
- Multi-template reports. A report can be composed from several templates, for example, a title page, several sections and a summary (Carsten Bøgh Poulsen).
- Dynamic object access. Objects can be accessed at runtime, so attributes can be inspected and modified. Objects can also be added at runtime (Håkan Nilsson).
- More special markers for fields and cells. [%bold%] and [%italic%] will make the field/cell bold or italic respectively. [%separator%], [%bold-separator%], [%double-separator%] will draw a thin line, a thick line or a double line across a row in a grid instead of data (Carsten Bøgh Poulsen).
- Images can not only be set from files, but also from
HBITMAPs and handles to DIBs (Alex Evans).
- Templates can not only be added from file, but also with data from a
CFile or even from the application resources (DaberElay, Carsten Bøgh Poulsen).
This project has been neglected for some time, but now it's time for an update! This time, we have:
Add when adding data as per documentation
- Added support for font charset. (Vladimir Svrkota, J Bartkowiak).
- Added locale-handling (J Bartkowiak).
- Added [%pagebreak%]-command for grids. This works as the other commands, when putting this text in a cell, the grid will break and continue on the next page. (Charlie Curry, Carsten B Poulsen)
- Added a function call
ReplaceCell to set cell data in a grid. This call replaces the data in a specific cell with new data. (Carsten B Poulsen)
And a big thanks for all the help, feedback and support for this project!