Home > BSPrinter documentation > Reference

SetPrintingProcedure Method

Applies to: IPrinterEx object

  Return Type:     None.  
 
  Parameter(s):  
   In     Required     Object     As     Object  
   In     Required     ProcedureName     As     String  
   In     Optional     ParametersArray     As     Variant  


Description:

Using the IPrinterEx object instead of a PrintPreview control is possible to have print preview capabilities from a Class module where no controls can be placed, or even from forms if you prefer.
Alternatively you can have the PrepareReport event by setting the PrinterExEvents object returned by the Events property.

The IPrinterEx is the interface of a global object that can be obtained with the PrintPreview global property.
Using this object, there are two ways to call the printing procedure, one is using events, for that see Events property. The other is to set the printing procedure with this method.

Parameters explained:

Object: this must be a reference to the class module, form or object where the printing procedure is.

ProcedureName: the name of the printing procedure. This procedure must be Public.

ParametersArray: if the printing procedure has parameters, they can come in an array here.

Example without parameters:

Private Sub Class_Initialize()
    PrintPreview.SetPrintingProcedure Me, "MyPrintingProcedure"
End Sub

Public Sub PrintPreviewMyReport() ' This is the method that will be called to show the print preview dialog with the report
    PrintPreview.ShowPreview
End Sub

Public Sub MyPrintingProcedure()
    Printer.Print "Hello Word"
    ' continue with the printing code
End Sub


Example with parameters:

Public Sub PrintPreviewMyReport1()
    PrintPreview.SetPrintingProcedure Me, "MyPrintingProcedure", Array(1, 14) ' ReportNumber = 1, TitleFontSize = 14
    PrintPreview.ShowPreview
End Sub

Public Sub PrintPreviewMyReport2()
    PrintPreview.SetPrintingProcedure Me, "MyPrintingProcedure", Array(2, 18) ' ReportNumber = 1, TitleFontSize = 14
    PrintPreview.ShowPreview
End Sub

Public Sub MyPrintingProcedure(ReportNumber As Long, TitleFontSize As Long)
    If ReportNumber = 1 Then
        Printer.FontSize = TitleFontSize
        Printer.Print "Report 1"
        Printer.FontSize = 12
        Printer.Print "Hello Word"
        ' continue with the printing code
    Else
        Printer.FontSize = TitleFontSize
        Printer.Print "Report 2"
        Printer.FontSize = 12
        Printer.Print "Hello Word"
        ' continue with the printing code
    End If
End Sub


Of course you can send the parameters in other ways in your program, this is just a possibility.