So, after posting that PollyReports was ready for use, I actually used it last night with a small report for one of my clients. Turns out, it still needed work.
But now, it works. There were a couple of things I had just plain forgotten, like… what if there are newlines in an Element’s text? Answer: break up the text into lines and print them one after the other in vertical alignment, using the given font size and leading to space them out. What about page numbers? Well, oops. I’ve added a sysvar parameter to Element initialization that can be used to access any of the parent Report’s variables. All I really want is “Report.pagenumber” but I can see that there may well be other uses for this.
Though this particular report didn’t use it, I have other client’s reports that used Geraldo’s event system (mainly so the user wouldn’t decide a slow-generating report was borked). Rather than add all those event hooks to PollyReports, I added just one: an onrender parameter added to Element, which is automatically passed to the Renderer when it’s instantiated. When Renderer.render is called (i.e. when the data is actually output), onrender is called with a single parameter, a reference to the Renderer. Assuming you called that parameter “obj”, the Element which spawned the Renderer is accessible as obj.parent, and the Report as obj.parent.report.