Using a reporting tool is a good idea, if you really want to do it yourself, you can. I do this for printing on custom paper in our licensed application. The key is to know the size of your paper and work with it using the PageHeight and PageWidth page properties. For A4 paper, I chose 297 mm by 210 mm, and from there I was able to calculate where I want. The calculation is performed as follows:
nStartPos := 210-141; nUserColX := muldiv(localPrinter.PageWidth, 187, 297); nUserColY := muldiv(localPrinter.PageHeight, nStartPos, 210);
The variable nStartPos is executed to run in a specific place, and then nUserColY is used to move through the line at a time, as here:
nUserColY := nUserColY - localPrinter.canvas.font.height - (localPrinter.canvas.font.height div 8);
Then it allows you to pick up more than one line at a time beautifully. This is not complete, but should be a good start for custom printing. A.
source share