Seleccionar Impresora
y las características de cómo imprimir

 

Fecha: 03/Feb/99 (21/Sep/98)
Autor: Norman A. Armas norman@apolloships.com


Esta forma yo la uso para seleccionar el printer y las caracteristicas de como quiero imprimir los reportes en Crystal Report 6.0 (usando Report Engine)

El codigo yo lo uso con Crystal Report pero es general para poder seleccionar uno el printer y las caracteristicas de como quieres imprimir. Esta idea se me ocurrio ya que si uno usa un generador de reportes, cualquiera que sea se ve uno amarrado a las posibilidades que le da este, de esta otra manera uno basandose en la coleccion de printers de windows puede hacerlo a su gusto y en base a la seleccion que el usuario haga pasarle estos parametros a el generador que uno tenga siempre que este le de las posibilidades a uno para ello.


Saludos
Norman
norman@apolloships.com


El código de ejemplo:

'
'Este codigo es en el Standard Modulo

Public Type SetPrinters
    Driver As String
    Name As String
    Port As String
    Copies As Integer
    RangePages As Boolean
    StartPage As Integer
    StopPage As Integer
    Collation As Boolean
End Type
Public PrinterSelect As SetPrinters




'Este codigo es en la forma para seleccionar el printer

'***********************************************************************
'Program     : Printers - frmHRPrinters
'Author      : Norman Armas
'Date        : 03/17/98
'***********************************************************************
Option Explicit
Dim PrinterAvailable As Printer
Dim lItem As Integer
Dim n As Integer
Dim PrinterDefault As String

Private Sub cboPrinters_Click()
    lItem = cboPrinters.ListIndex
End Sub

Private Sub cmdCancel_Click()
    gPrinterCancel = True
    Unload frmHRPrinters
End Sub

Private Sub cmdOK_Click()
    With PrinterSelect
        .Driver = Printers(lItem).DriverName
        .Name = Printers(lItem).DeviceName
        .Port = Printers(lItem).Port
        .Copies = Val(txtCopies)
        If optRangePages Then
            .RangePages = True
            .StartPage = Val(txtFrom)
            .StopPage = Val(txtTo)
        End If
        .Collation = IIf(chkCollate, True, False)
    End With
    Unload frmHRPrinters
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    OnOffInsert Screen.ActiveControl, KeyCode
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
    KeyAscii = CharUCase(KeyAscii, DisableUcase)
    If KeyAscii = 13 Then
        SendEnter
        KeyAscii = 0
    End If
End Sub

Private Sub Form_Load()
    '$Guille: Este procedimiento para centrar los forms no se incluye en el código
    'CenterForm Me, False
    Screen.MousePointer = vbDefault
    PrinterDefault = ""
    lItem = -1
    SQL = "select * from printers where reportid='" & Trim(gKeyValue) & "'"
    Set rs = rsOpen(SQL, False)
    'MsgBox rs.RowCount
    If rs.RowCount > 0 Then
        PrinterDefault = Trim(rs!printerid)
    End If
    For Each PrinterAvailable In Printers
        cboPrinters.AddItem PrinterAvailable.DeviceName
        cboPrinters.ItemData(cboPrinters.NewIndex) = n
        If Trim(PrinterDefault) <> "" Then
            If Trim(PrinterAvailable.DeviceName) = Trim(PrinterDefault) Then
                lItem = n
            End If
        Else
            If Trim(PrinterAvailable.DeviceName) = Trim(Printer.DeviceName) Then
                lItem = n
            End If
        End If
        n = n + 1
    Next
    If lItem = -1 Then
        MsgBox "Default Printer not Install on Workstation", vbExclamation
        lItem = 0
    End If
    cboPrinters.ListIndex = lItem
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Set frmHRPrinters = Nothing
End Sub

Private Sub optRangeAll_Click()
    txtFrom.Enabled = IIf(optRangeAll, False, True)
    txtTo.Enabled = IIf(optRangeAll, False, True)
End Sub

Private Sub optRangePages_Click()
    txtFrom.Enabled = IIf(optRangeAll, False, True)
    txtTo.Enabled = IIf(optRangeAll, False, True)
End Sub

Private Sub txtCopies_KeyPress(KeyAscii As Integer)
    If KeyAscii < 48 Or KeyAscii > 57 Then
        KeyAscii = 0
    End If

End Sub

Private Sub txtFrom_KeyPress(KeyAscii As Integer)
    If KeyAscii < 48 Or KeyAscii > 57 Then
        KeyAscii = 0
    End If
End Sub

Private Sub txtTo_KeyPress(KeyAscii As Integer)
    If KeyAscii < 48 Or KeyAscii > 57 Then
        KeyAscii = 0
    End If

End Sub


End Function

 


ir al índice