Printing multiple pages in Viusal Basic .net each from a different source using Sub Routines
-
First post here so please be patient, I wrote some software for the company that I work for in VB6 for Scheduling and quoting construction based projects and am upgrading to VB 2008, not a problem except for the printing, The user had several check boxes and option groups which related to which pages were printed, the first was a cover page, second page a preamble, third page list of doors etc all taken from different sources, in VB6 it was pretty simple to create a printer object (called myPrint) call the various page sub routines and to put it together example as below:
Select Case True
Case frmPrint.optAll(0).Value = True 'materials listing
MyPrint.NewPage
PProductListingA
Case frmPrint.optAll(1).Value = True 'bill of quantities
MyPrint.NewPage
PBOQsAObviously we've lost the NewPage which has been replaced with HasMorePages from within the PrintPage method, I've spent about a week now trying to call the various sub routines from within this and quite simply have hit a brick wall. Lots of examples on the web to point me in the right direction but they all seem to be based around a single block of text printed over various pages, help. I just need a pointer in the right direction.
-
First post here so please be patient, I wrote some software for the company that I work for in VB6 for Scheduling and quoting construction based projects and am upgrading to VB 2008, not a problem except for the printing, The user had several check boxes and option groups which related to which pages were printed, the first was a cover page, second page a preamble, third page list of doors etc all taken from different sources, in VB6 it was pretty simple to create a printer object (called myPrint) call the various page sub routines and to put it together example as below:
Select Case True
Case frmPrint.optAll(0).Value = True 'materials listing
MyPrint.NewPage
PProductListingA
Case frmPrint.optAll(1).Value = True 'bill of quantities
MyPrint.NewPage
PBOQsAObviously we've lost the NewPage which has been replaced with HasMorePages from within the PrintPage method, I've spent about a week now trying to call the various sub routines from within this and quite simply have hit a brick wall. Lots of examples on the web to point me in the right direction but they all seem to be based around a single block of text printed over various pages, help. I just need a pointer in the right direction.
I would think that you just pass the Graphics object in the print event args to the Sub that's going to render that particular page. You just have to check for which page your printing to know which Sub to call.
A guide to posting questions on CodeProject[^]
Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
2006, 2007, 2008 -
I would think that you just pass the Graphics object in the print event args to the Sub that's going to render that particular page. You just have to check for which page your printing to know which Sub to call.
A guide to posting questions on CodeProject[^]
Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
2006, 2007, 2008Thanks Dave, I've tried this in just about everyway that I can think, the problem is that each section could be a number of pages long and it seems that when I pass it as Printing.PrintPageEventArgs so that each sub routine can check to see if there are any more pages using HasMorePages, the event is fired from both within the subroutine and the main PrintPage routine! if I pass it as a Graphics object than there's no way of checking to see if it will fit on one page or how to add one if it needs more (the old VB6 way was easy)
-
Thanks Dave, I've tried this in just about everyway that I can think, the problem is that each section could be a number of pages long and it seems that when I pass it as Printing.PrintPageEventArgs so that each sub routine can check to see if there are any more pages using HasMorePages, the event is fired from both within the subroutine and the main PrintPage routine! if I pass it as a Graphics object than there's no way of checking to see if it will fit on one page or how to add one if it needs more (the old VB6 way was easy)
What I have done in this case (for example in the DataGrid printer class[^] and the Structured Print Document[^]) is to have each "data item" track how much of it is is left and throw a new page if there is more data to print.
'--8<------------------------ Ex Datis: Duncan Jones Merrion Computing Ltd
-
What I have done in this case (for example in the DataGrid printer class[^] and the Structured Print Document[^]) is to have each "data item" track how much of it is is left and throw a new page if there is more data to print.
'--8<------------------------ Ex Datis: Duncan Jones Merrion Computing Ltd