While it has been possible to get to this result using different preview files and combining them into a single preview, this approach isn’t as flexible as it could get. And collecting a common table of contents was just impossible that way. List & Label 26 will help with a feature called “combination print” that allows to combine arbitrary projects into one print job.
Usage of this feature is quite simple – you pass the required project files semicolon separated to LlPrintWithBoxStart or – when using one of our componentes – to AutoProjectFile. This feature requires a data provider implementation as data source, i.e. it can be used from .NET, VCL or C++.
Let’s do a quick walkthrough. For this sample, I’ve prepared three reports, a cover sheet, a dashboard and a detail section. The code to get these three in a single print out would simply be:
LL.DataSource = GetMyDataSource(); LL.AutoProjectFile = @"C:\Reports\Cover Sheet.lst;c:\Reports\Dashboard.lst;c:\Reports\Details.lst"; LL.AutoShowSelectFile = false; LL.Print();
That’s it – the setter for AutoProjectFile tells List & Label to print these three reports in a row and the result in the preview then looks like expected:
There are huge advantages of this approach compared to printing different reports and appending the respective preview files, which would have been the way to achieve a similar result before:
- Incremental display of preview during the print just like a “normal” report
- Support for progress just like a “normal” report
- Report-spanning page count, including correct TotalPages$ counter: This was not easily possible before for combined reports and required a time consuming two pass approach.
- Report-spanning table of contents and index: Simply add a table of contents or index project to the list of projects to be printed. This was impossible before.
In order to add even more flexibility. there’s also a callback/event (“NextCombinationPrintStep” or LL_NTFY_COMBINATIONPRINTSTEP) whenever the next project triggers which gives you the current project’s index and full path. This can then be used to adapt options, add additional data etc. as required.