Sorry I have been so quiet for a while, its because I have been working on the session material for the Cologne 'xBase.Live' presentation on "Printing and Reporting".
Over the last ten days or so I have given third party products / frameworks a rest (a break) and have been focusing on using my own X# class library called 'BESTdocument' - in order to make reports and printed output.
Unfortunately, I seem to have lost previous work I did for "DevFest 2009", so I have had to re-code the 'Report Generation' tools I had been using previously. Anyone got a CD from back then ?
However, this gave me the opportunity to base any reporting software tools on Collections, 'in-Memory' collections like 'List<T>'. The following image is based on the 'Person' class, just a simple test class of mine. So I am processing a List<Person> object in order to create the single page report - check this out :-
Sorry, yes, I know the colours are a bit yucky / garish, but it is test code and test data. The point is that we have complete freedom to apply logical conditions - to ignore a column item detail, or to change its color or font attributes, like applying strike-through, italic etc. We can even apply functions to make a calculated field - since STATIC methods are really functions.
For those of you who may be a bit new to Printing (and Reports) it is most important to have a Preview feature / function with which to work. Otherwise we are working 'blind'. We need to view before printing hard copy. This was a big issue with my VO based class.
The Preview tools in .NET seem to be of the WinForms generation of technology so even the following image shows a WPF main form which is using a floating dialog Preview WinForm :-
This output was generated by clicking the "UK guys" putton at the bottom right of WPF form.
Now then, two other issues to be sorted out were the 'Multiple Page' issue, and showing a Control for print previewing on a WPF form. Take a look at this then :-
Okay then, I know the page content is NOT startling (or particularly interesting) but we need to keep thing simple when dealing with 'tricky' issues like multiple paging.
What we see are four pages from a document, and the detail is showing in the 'Hosted' control on a WPF form. Yes, we are using a WinForm control for Previewing, in a 'hosted' manner on a WPF Window.
Finally for now, we see below just the Control output of the four pages, BUT, the data available behind each one is in fact that for a full columned report, I just need to add the extra code required, to make it similar to that one page output previously show here.
I will add all of the details on how to do this to my growing eNotes volume called 'ClickStartXSharp' which will be eventually available to the full Forum guys.
I recommend however to attend the Conference and visit the Presentation on this topic - there is no way any written material can compare with live session presentations. I know, I have sat through enough of them over the years ;-0) Many benefits from attending conferences, I have learned a LOT over the years.
Hope this interests a few.
Oh! - buy the way, if you copy and adapt my code, its not difficult to get your own reports to work nicely for you - AND - they can be created from DBF data if needs be, as well as my class library and the library tools all available to XIDE applications.
One of the possible draw-backs of nice modern Third Party reporting frameworks is that they are designed to be used with Visual Studio, and some even seem as if they may be limited to C# / VB because they have Wizard templates installed, which are not currently available to us using X# and VS.
So at least we can print just about anything with our own X# classes, using WinForm previewing - GREAT news !!! And its free.
I have the CD from 2009.
What exactly are you looking for. I see several folders from you with chm files, one of them is the ReportsAndPrinting file (ReportsNPrinting_79.chm )
No source code, just the CHM files.
When looking I also found lots of CDs from other conferences with interesting material.
Samples, powerpoints, videos etc.
I have no idea if the original authors would like to share their work. But we could easily publish that on Wolfgangs or our website to make it available to anybody who is interested.
XSharp Development Team
this is what we (at Elecosoft) has done to make it possible for our users to customize print layouts. The print layouts that we provide (called System layouts) cannot be changed by the user can copy the layout and the copy is editable. The system layots can be updated when you install an update, but not the user defined layouts. The layout is edited in four tabs;
Print Layout 1.png
Print type sets which table and which report type to use.
The format template (Format template.png) lets you set text and background colors.
Print Layout 2.png
This is where you selects columns for the report. If there is a check in the summary column you get a summary for each Group and a report total.
Print Layout 3.png
Grouping and sort order. The Group level is for code systems with hierarchies, i.e. accounts. You can Group by individual accounts or by account Groups.
Print Layout 4.png
Oriantation, logo and margins.
The column, Group and sort order selections are completely data driven. Our database determine what the user can choose between.
Hope this gives you some ideas for Printing. We use the Printing Engine Active reports, but I would not recommend it to anyone as it has crappy support, and are slow on updates.
- Easy editing for the user or when having support.
- Report layouts are limited to our system of calculated positions. Report designers lets you design reports without limitations (except for the paper and printer capabilities).
IMHO the publication of past conference material is a good idea, but every speaker should give his permission. Otherwise I don't think it is correct.
Of course, if you need it, I can contribute with server space and work.
I give my permission to use and distribute any and all of my conference material, DevFest, DevShare, and German conferences. Obviously any very recent session material needs to be held onto for a few months until after the conference finishes ;-0)
Robert, please can you find my folder contents on CD for March 2008, 2009 and 2010 from DevFest. From what you posted it seems that I may have lost my sample for "ReportGenerator" for good.
Can you give me privately n FTP or OneDrive link please ?
However, I do have something more modern and useful too, as seen in the Pearls thread next post .....
While I wait to see if you can provide a link to anything helpful from the CDs, from 2008,2009 & 2010, here is some progress information from yesterday.
At 12.35 last evening/morning I finally managed to get the tricky business of multiple pages and columnated reports working fully - not an easy task from nothing as a start point. The event handling and delegate method for printing the pages is a bit tricky till you know exactly what to do Oh! and what NOT to do. It only takes a short incorrect code line to screw the whole thing ;-0(
So lets see what I have made with X# version 1.2 - it's the 'part' last page which tests our coding skills !
Remember that the preview control is a WinForms control and is being 'Hosted' on a WPF Window.
Detail is not readable but the colour coding gives an indication of some sort of ordering/sorting.
Here is a different row ordering - it is easy to do outside of the reporting code itself - first the image :-
And now to see just how easy it is to change the report row order, or indeed the row content, depending on the LINQ used :-
Obviously I am including the LINQ into the new set of Button clicks which are to go down the left hand side of the WPF form - empty / blank at the moment.
And now finally the test of a good (single) delegate method. the last and usually 'part' page :-
Although the images shown are before my recent addition of these extra buttons, we can see the LINQ code enclosed in the button click method - applied before the reporting multiple pages code is triggered and used.
I will now have a coffee to refresh my brain before adding a lot of different 'LINQ driven' button selections - and hence different report sets. We will see some difference in report length - and hence page sets 'size'.
Hope this interests a few guys. At least it gives us a bit more of an understanding as to how printing (and report generation too) is done in .NET And if we like we can at least do some of this tricky stuff ourselves.