INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!

*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Jobs

Visual Basic (Microsoft) Versions 5/6 FAQ

What VB shoud be able to do!

Printer Select Dialog Form - Part 1 by CassandraR
Posted: 20 May 03 (Edited 9 Oct 03)

Printer Select Dialog ActiveX DLL

Below are listed seven code modules.  

The first four modules provide the source code for a Printer Select dialog form, in an ActiveX DLL class format. The last three modules provide a simple test platform to engage the Printer Select class.

For those who are interested in using the code, please download each block code and save according to the instructions.  The various files should be saved in one directory.

Hopefully, for those who need to get around Microsoft's useless Common Dialog Box's ShowPrinter "features", this module provides the starting point for adding a Printer Select dialog form to your projects.  With the complete source code available below, one can extract a lot more information than the ShowPrinter provides and can build in features that you deem desirable.  (The software below does not alter Windows' default printer setting to the selected printer.)

The Test1.frm code shows how to interface to this class.  It is rather simple:
1. Make a project reference to the class.
2. Declare a variable of the class type:
    Private m_PrintSelect As clsPrintSelect
3. Instantiate a member of the class type:
    Set m_PrintSelect = New clsPrintSelect
4. Call the PrinterSelect routine.
    m_PrintSelect.PrinterSelect
5. After selecting the printer and clicking on Okay, the program should call the class to get a pointer to the printer:
    Set ptrMyPrinter = m_PrintSelect.PrinterSelected

Additional features may be added as you wish, albeit that that is your responsibility.  

Module 1: PrintSelect.vbp -- project file for the Printer Select class.
Module 2: printsel.frm -- the Printer Select dialog form.
Module 3: mdlPrinterAccess.bas -- the printer access routines.
Module 4: clsPrintSelect.cls -- the class interface.
Module 5: Test1.frm -- a simple form with one command button to call the Printer Select class.
Module 6: Test1.vbp -- project file for the test platform.
Module 7: PrintSelect.vbg -- the group file for the test platform.

The modules have been divided into seven parts to fit within Tek-Tips' constraints.
Part 1 contains PrintSelect.vbg, PrintSelect.vbp, Test1.vbp and Test1.frm.
Parts 2A (FAQ222-3604), 2B, (FAQ222-3614) and 2C (FAQ222-4285) contains the mdlPrinterAccess.bas.<BR>
Parts 3A (FAQ222-3605) and 3B (FAQ222-4286) contains PrintSel.frm.
Part 4 (FAQ222-4287) contains clsPrintSelect.cls.

My company, Professional Logics Corporation (PLC), has agreed to the release of this programming with the following conditions:
1. Copyright notices must remain in the source code.  PLC reserves all rights to the use of this code, except as listed here.

2. The code may be used, as is or as modified by the user, for non-profit and commercial use, without the obligation of royalties.

3. Writing credit must be given to PLC if the code is used in a commercial product.  Such credit to be comprised of mention of PLC's supply of the Printer Select dialog form source code.  Such credit should be included in the About menu item and/or the help file.

4. PLC shall not indemnify anyone or any company that uses the code.

5. PLC does not warranty or guarantee the correctness of the code.

6. PLC does not provide any support for the source code provided or to any product that uses the source code.

Cassie

Save as PrintSelect.vbg

VBGROUP 5.0
StartupProject=Test1.vbp
Project=PrintSelect.vbp

End of PrintSelect.vbg


Save as PrintSelect.vbp

Type=OleDll
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\..\..\..\WINDOWS\SYSTEM\StdOle2.Tlb#OLE Automation
Class=clsPrintSelect; clsPrintSelect.cls
Form=printsel.frm
Module=mdlPrinterAccess; mdlPrinterAccess.bas
Startup="(None)"
HelpFile=""
Command32=""
Name="PrinterSelectPrj"
HelpContextID="0"
CompatibleMode="1"
MajorVer=1
MinorVer=0
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0
VersionCompanyName="Professional Logics Corp"
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
FDIVCheck=0
UnroundedFP=0
StartMode=1
Unattended=0
Retained=0
ThreadPerObject=0
MaxNumberOfThreads=1

End of PrintSelect.vbp


Save as Test1.vbp

Type=Exe
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\..\..\..\WINDOWS\SYSTEM\StdOle2.Tlb#OLE Automation
Reference=*\APrintSelect.vbp
Form=Test1.frm
Startup="frmTest1"
Command32=""
Name="Test1"
HelpContextID="0"
CompatibleMode="0"
MajorVer=1
MinorVer=0
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0
VersionCompanyName="Professional Logics Corp"
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
FDIVCheck=0
UnroundedFP=0
StartMode=0
Unattended=0
Retained=0
ThreadPerObject=0
MaxNumberOfThreads=1

End of Test1.vbp


Save as Test1.frm

VERSION 5.00
Begin VB.Form frmTest1
   Caption         =   "Print Select Test"
   ClientHeight    =   1080
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   4680
   LinkTopic       =   "Form1"
   ScaleHeight     =   1080
   ScaleWidth      =   4680
   StartUpPosition =   3  'Windows Default
   Begin VB.CommandButton cmdSelectPrinter
      Caption         =   "Select &Printer"
      Height          =   495
      Left            =   1200
      TabIndex        =   0
      Top             =   240
      Width           =   1815
   End
End
Attribute VB_Name = "frmTest1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Private m_PrintSelect As clsPrintSelect
Private m_SelectedPrinter As Printer
'

Private Sub cmdSelectPrinter_Click()
    m_PrintSelect.PrinterSelect
    Set m_SelectedPrinter = m_PrintSelect.PrinterSelected
    MsgBox m_SelectedPrinter.DeviceName
End Sub

Private Sub Form_Load()
    Set m_PrintSelect = New clsPrintSelect
End Sub

End of Test1.frm

Back to Visual Basic (Microsoft) Versions 5/6 FAQ Index
Back to Visual Basic (Microsoft) Versions 5/6 Forum

My Archive

Resources

Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close