Printer object replacement syntax

T

Tom Berry

We currently are trying our first transformation from VB6 to VB.Net. Of
course, the Printer object is gone, but I'm having trouble finding the
replacement syntax necessary to perform similar actions or set variables.
We are interested in doing this inline (no pop-up dialog box).
Specifically, where how would I replace the following properties/methods of
the old Printer objects.

Printer.NewPage
Printer.TextHeight
Printer.TextWidth
Printer.PaintPicture
Printer.Print
Printer.Line
Printer.EndDoc

Thanks, Tom.
 
A

Armin Zingler

Tom Berry said:
We currently are trying our first transformation from VB6 to VB.Net.
Of course, the Printer object is gone, but I'm having trouble finding
the replacement syntax necessary to perform similar actions or set
variables. We are interested in doing this inline (no pop-up dialog
box). Specifically, where how would I replace the following
properties/methods of the old Printer objects.

Printer.NewPage
Printer.TextHeight
Printer.TextWidth
Printer.PaintPicture
Printer.Print
Printer.Line
Printer.EndDoc

Maybe this helps:
http://msdn.microsoft.com/library/en-us/vbcon/html/vxconprinterobjectchangesinvisualbasicnet.asp
 
T

Tom Berry

Thanks for the link. I looked up TextHeight and TextWidth in that
conversion table, and it said "Font parameter of Graphics.Drawstring". When
I type the statement System.Drawing.Graphics. it does not even give
DrawString as a potential selection from the dropdown list of methods and
properties. There are 4 choices, but DrawString isn't one of them. TIA for
any help in this matter.
 
H

Herfried K. Wagner [MVP]

* "Tom Berry said:
We currently are trying our first transformation from VB6 to VB.Net. Of
course, the Printer object is gone, but I'm having trouble finding the
replacement syntax necessary to perform similar actions or set variables.
We are interested in doing this inline (no pop-up dialog box).
Specifically, where how would I replace the following properties/methods of
the old Printer objects.

Printer.NewPage
Printer.TextHeight
Printer.TextWidth
Printer.PaintPicture
Printer.Print
Printer.Line
Printer.EndDoc

Sample:

<http://www.mvps.org/dotnet/dotnet/samples/printing/downloads/PrintFramework.zip>
 
A

Armin Zingler

Tom Berry said:
Thanks for the link. I looked up TextHeight and TextWidth in that
conversion table, and it said "Font parameter of
Graphics.Drawstring". When I type the statement
System.Drawing.Graphics. it does not even give DrawString as a
potential selection from the dropdown list of methods and properties.
There are 4 choices, but DrawString isn't one of them. TIA for any
help in this matter.

DrawString is not a shared member, it is an instance member. Means: You need
a graphics object to execute the method. You get the object in the PrintPage
event as a property of the passed argument (e.graphics.drawstring). At the
bottom of the page linked in my previous post is a "Windows Forms
Print support" link leading you to
http://msdn.microsoft.com/library/en-us/vbcon/html/vbconprintsupport.asp
There is more information on the PrintDocument object and it's PrintPage
event.
 
R

Ron Allen

Tom,
Printing doesn't really work that way anymore. It works more like the
hDc drawing methods used by C++ before. Having said that you should look at
the example printing items using PrintDocument in the help files. Basically
all page drawing is done inside a PrintPage event of the document. Setting
the HasMorePages property of the PrintPageEventArgs variable to true and
returning will do a new page and then re-enter the event to draw the
following page(s). Setting HasMorePage to false and returning is the
equivalent of Printer.EndDoc. Note that you need to keep track of your
print items outside of the PrintPage event as it gets re-run from the top on
every page.
Text Height/Width are (roughly) equivalent to MeasureString on the
Graphics of the supplied argument (say e for further discussion). So
e.Graphics.MeasureString("The String", theFont, ...) will return a size with
a height/width (see the various overloads for more detail).
e.Graphics.DrawImage is somewhat like PaintPicture, e.Graphics.DrawString is
like Print and e.Graphics.DrawLine is like Line. You will have to supply
Pens, Fonts, and Brushes to these calls.
Normally I initialize all Fonts, and all non-standard Brushes and Pens
as well as the document datastream in the OnBeginPrint of the derived
PrintDocument class and dispose them properly in OnEndPrint. If you want to
handle landscape/portrait switching set the appropriate flag in the
QueryPageSettingsEventArgs (e.PageSettings.Landscape) for the
OnQueryPageSettings event which is performed for each page.

Ron Allen
 
T

Tom Berry

Thanks for your detailed post and to the other responders with the links to
examples. One of my initial problems is I didn't include an Import to
signify I was interested in the Graphics area of System. Without that
definition, I didn't get the listing of Drawstring as a potential method. I
have no C++ background and haven't used classes that much. Perhaps this new
language should have been called C++.Net. With their reliance on classes,
objects, things like += (which I did use and like from C BTW), this IMO is a
lot closer to C++ than it is to Visual Basic. I think the C++ people are
Microsoft must have made most of the decisions on this language while the VB
people were literally out having lunch or something. I'm just surprised I
don't see semicolons at the end of each line. :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top