Expiring Today—Celebrate National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17


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

Posted on 1998-12-27
Medium Priority
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 280 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,
daveb@banet.net (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

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Since upgrading to Office 2013 or higher installing the Smart Indenter addin will fail. This article will explain how to install it so it will work regardless of the Office version installed.
This article describes how to use a set of graphical playing cards to create a Draw Poker game in Excel or VB6.
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…
Suggested Courses

719 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