All of my reports are custom ... nothing comes from a generator. I use the tPrinter class. You can define fonts, rows, columns, and completely custom layouts. Some are straight lists while others might use a section header with multiple lines of defined data. I do invoices, statements, forms ... everything. I can use one, or multiple, databases, and of course I can do calculations on data within the process ( for example, express percentages not stored in the dbf ). I can also add symbols ( ie checkboxes ), text, graphics, lines / boxes, and shading. Its all quite simple.
I simply select the preview to view it on screen, or I can send it to any printer.