---------- LOTS OF PRINTING QUESTIONS -----------

Posted on 1998-12-27
Last Modified: 2010-05-03
Several printing questions here, so hope that someone can help me out. I guess maybe some of them are pretty simple, but not having used VB to print before then for me they are all equally mystifying.

a) How can I print a bitmap file to a printer from a given  pathname, or do I need to have it in a picture box ? Either way I'm not sure how to do it.

b) I've got a small print routine that sets the printer font to Tahoma and fontsize to 18 and fontbold to true. The first time I use it then all is well, but try it again and it goes back to the printer defaults, even though it goes through the same code again. Am I missing something ?

c) Is it possible to print a control ? By this I mean that if I want a checkbox in the printout, or a command button for example then can I get it to do this - I basically want checkboxes in certain positions in the report. Do I need to have an image of a checkbox and print this instead ? If so then same as question (a)

Well, think thats all for now - hope someone can help out.
I know there are plenty of shareware controls to do printy type things from VB  but really need to know how to do it myself.
Thanks in advance.
Question by:dgb001
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3

Expert Comment

ID: 1452607
I can find a good performance with Vsview 3.0 (VideoSoft) You can find a free demo.
This is the more flexible tools for print


Author Comment

ID: 1452608
Thanks for your proposed answer Renato, and I'm sure the tool you mention is probably useful, but as I said in the question I really do need to know how to do this myself. (i.e the actual code)

Thanks anyway

LVL 12

Accepted Solution

mark2150 earned 70 total points
ID: 1452609
a) You have to load the bitmap into some control and then Printer.PrintPicture Control.Image to print the image. You can't print direct from the disk file. But the control doesn't have to be visible so it's not that great a handicap. Also be sure to set AutoSize to true so it'll grow/shrink if all of your disk .BMP's are not exactly the same size.

b) Is known bug in VB where sometimes you have to hit the .FontStyle twice for it to stick. It's also sequence sensitive where you need to set font style, then size, then attributes.

c) Yes you can print a control. No, you won't like the results. The reason is that when you print the control it is rendered like a screen snapshot - at the rez of the screen. Your printer generally will have a much higher rez than the screen and this means that you get a little teeny, hi-rez version or a 1:1 lo-rez version - neither looks particulary good.

One thing you *CAN* to that is neat with VB is that you can have the *SAME* print routine render to both a screen based object and the printer. Simply pass the target into the routine as an OBJECT parameter. If the object is, say, an image control, then your stuff shows up there. If the object is the printer, then your stuff prints there. The neat part is that both are rendered with MAXIMUM POSSIBLE QUALITY. This will give you crisp, sharp text on the printer along with nice, high quality graphics.

Set up your print routine like this:

Tgt.Print ...

Then if you have:

SET TARGET = (some control)

That will show up on your control

if you instead code:


Now it'll print.

You have to put a little conditional logic in your Render() routine to isolate printer/control specific items. For instance a .CLS doesn't apply to printers and you can't .EndDoc a control. Is not that hard tho.

eMail me and I'll send you operational code if you need more help.



Author Comment

ID: 1452610
Thanks Mark, that all looks pretty good stuff. I will almost certainly e-mail you in the next couple of days (unfortunately my company e-mail isn't working at the moment so I need to keep logging in to Experts Exchange to see if there are any comments or answers - hence I can't e-mail you at the moment either).

Thanks again,
Dave (this is my home e-mail address)


Author Comment

ID: 1452611
Just for anyone elses benefit in the future then the following link may prove of use :

Featured Post

Creating Instructional Tutorials  

For Any Use & On Any Platform

Contextual Guidance at the moment of need helps your employees/users adopt software o& achieve even the most complex tasks instantly. Boost knowledge retention, software adoption & employee engagement with easy solution.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article describes some techniques which will make your VBA or Visual Basic Classic code easier to understand and maintain, whether by you, your replacement, or another Experts-Exchange expert.
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…
Suggested Courses
Course of the Month10 days, 1 hour left to enroll

623 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question