Id. de artículo: 322710 - Última revisión: jueves, 29 de marzo de 2007 - Versión: 2.3

Cómo: Provocar y cuadros de diálogo de impresión de control desde Visual Basic

En esta página

Expandir todo | Contraer todo

Resumen

Puede utilizar el archivo Vbprndlg.dll en lugar de la parte de cuadro de diálogo Imprimir del control CommonDialog de Visual Basic. Este archivo expone propiedades y proporciona funcionalidad que el control CommonDialog no.

El control CommonDialog en Visual Basic permite que se muestre el cuadro de diálogo Imprimir , pero no le otorga acceso a muchas de las propiedades que se pueden establecer en el cuadro de diálogo Imprimir y utilizadas por el objeto Printer . Debido a problemas alineación con las estructuras de (es decir, definido por el usuario tipos) cuando se realizan las funciones de interfaz (API) de programación de aplicaciones de Win32 desde Visual Basic, confiable no puede obtener información adicional utilizando estas llamadas a API. Como solución, este artículo proporciona una DLL que puede utilizar en lugar de la parte de la impresora del control CommonDialog .



Descargar el control

El archivo siguiente está disponible para descargarlo del Centro de descarga de Microsoft:
Vbprndlg.exe (http://download.microsoft.com/download//vb60pro/utility/1.0/win98mexp/en-us/vbprndlg.exe)
Fecha de lanzamiento: 30-Sep-2002

Para obtener información adicional acerca de cómo descargar los archivos de soporte técnico de Microsoft, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
119591  (http://support.microsoft.com/kb/119591/EN-US/ ) Cómo obtener Archivos de soporte técnico de Microsoft desde los servicios en línea
Microsoft exploró este archivo en busca de virus. con el software de detección de virus más reciente disponible en la fecha de publicación. Asimismo, el archivo se almacenó en servidores seguros que ayudan a impedir la realización de cambios no autorizados. El archivo Vbprndlg.exe contiene los archivos siguientes:

Contraer esta tablaAmpliar esta tabla
Nombre de archivoTamaño
Vbprndlg.dll100,0 KB
Vbprndlg.EXPKB DE 1.0
Vbprndlg.lib1,72 KB
Vbprndlg.DEP118 Bytes
Readme.txt10.9 KB


Instalar Vbprndlg.exe

  1. Extraer los archivos en una ubicación que no se eliminarán y tiene una ruta sencilla. Estos tipos de archivos normalmente se colocan en el directorio System32 en Windows o el directorio Winnt.
  2. Haga clic en Inicio y, a continuación, haga clic en Ejecutar .
  3. Escriba lo siguiente y, a continuación, haga clic en Aceptar :
    RegSvr32 C:\Windows\System32\VBPrnDlg.dll
    Asegúrese de que utiliza la ruta de acceso completa real a la DLL como la segunda parte de este comando.

    Recibirá un mensaje de la DLL se registró correctamente.

Documentación de la clase Printerdlg

Esta DLL es un componente COM que se agrega como una referencia a una aplicación de Visual Basic. Después de agregar el archivo DLL, lo puede utilizar en el código para mostrar el cuadro de diálogo Imprimir y para recuperar la información que el usuario selecciona. Este comportamiento es el mismo como el comportamiento del cuadro de diálogo Imprimir , en el control CommonDialog de Visual Basic.

Propiedades de cuadro de diálogo

Para obtener documentación acerca de cualquiera de estas propiedades, consulte la documentación para el control CommonDialog . Printer.hdc es de sólo lectura, pero el objeto de todas las propiedades siguientes excepto aquellos que están marcados con un asterisco (*) directamente se asignan a la impresora cuando se utilice la siguiente sintaxis:
Printer.Copies = printDlg.Copies
				
  • copias
  • orientación
  • ColorMode
  • DriverName
  • dúplex
  • PaperBin
  • PaperSize
  • puerto
  • PrintQuality
  • hDC
  • nombreImpresora *
  • min *
  • máximo *
  • FromPage *
  • ToPage *
nombreImpresora se asigna a DeviceName en el objeto Printer . Las última cuatro propiedades que están marcadas con un asterisco (*) se utilizan para determinar si se debe imprimir un subconjunto de las páginas disponibles. Para habilitar la Páginas seleccionar parte de la impresión cuadro de diálogo, máximo debe establecerse en un número que es mayor que Min . Si el mínimo es mayor que máximo , se produce un error cuando aparezca el cuadro de diálogo. Si el usuario selecciona un subconjunto, el objeto PrinterDlg asegura que está dentro de los límites de mínimo y máximo y se devuelve en las propiedades de FromPage y ToPage . Estas propiedades no directamente asignan hasta el objeto de impresora , por lo que el programa que provoca el cuadro de diálogo y controles de la impresión debe controlar estas propiedades.

Propiedades y métodos de control del diálogo

  • indicadores - esto es igual a la propiedad de Flags en el control CommonDialog . Controla algunas de las características del cuadro de diálogo. Este valor se establece mediante "OR" con diferentes constantes en el VBPrinterConstants estructura. Por ejemplo:
    printDlg.Flags = VBPrinterConstants.cdlPDDisablePrintToFile _
                         Or VBPrinterConstants.cdlPDNoPageNums
    					
    estas constantes son:
    Constant                  Value       Description
    ---------------------------------------------------------------------------
    cdlPDAllPages             &H0         Returns or sets the state of the All 
                                          Pages option button.
    
    cdlPDCollate              &H10        Returns or sets the state of the  
                                          Collate check box.
    
    cdlPDDisablePrintToFile   &H80000     Disables the Print To File check box.
    
    cdlPDHelpButton           &H800       Causes the dialog box to display the 
                                          Help button.
    
    cdlPDHidePrintToFile      &H100000    Hides the Print To File check box.
    
    cdlPDNoPageNums           &H8         Disables the Pages option button and 
                                          the associated edit control.
    
    cdlPDNoSelection          &H4         Disables the Selection option button.
    
    cdlPDNoWarning            &H80        Prevents a warning message from being
                                          displayed when there is no default 
                                          printer.
    
    cdlPDPageNums             &H2         Returns or sets the state of the 
                                          Pages option button.
    
    cdlPDPrintSetup           &H40        Causes the system to display the 
                                          Print Setup dialog box instead of 
                                          the Print dialog box.
    
    cdlPDPrintToFile          &H20        Returns or sets the state of the 
                                          Print To File check box.
    
    cdlPDReturnDC             &H100       Returns a device context for the 
                                          printer selection made in the dialog 
                                          box. The device context is returned 
                                          in the hDC property of the dialog 
                                          box.
    
    cdlPDReturnDefault        &H400       Returns the default printer name.
    
    cdlPDReturnIC             &H200       Returns an information context for 
                                          the printer selection made in the 
                                          dialog box. An information context 
                                          provides a fast way to get 
                                          information about the device without 
                                          creating a device context. The 
                                          information context is returned in 
                                          the hDC property of the dialog box.
    
    cdlPDSelection            &H1         Returns or sets the state of the
                                          Selection option button. If neither 
                                          cdlPDPageNums nor cdlPDSelection is 
                                          specified, the All option button is 
                                          in the selected state.
    
    cdlPDUseDevModeCopies     &H40000     If a printer driver does not support
                                          multiple copies, setting this flag 
                                          disables the Number of Copies spinner
                                          control in the Print dialog box. If a
                                          driver does support multiple copies, 
                                          setting this flag indicates that the 
                                          dialog box stores the requested 
                                          number of copies in the Copies 
                                          property.
    
    					
    puede utilizar la propiedad Flags para determinar si el usuario eligió un campo, como Imprimir a archivo . Para ello, examine para ver si ha establecido el indicador cdlPDPrintToFile cuando el control ha devuelto de mostrar el cuadro de diálogo.

  • CancelError - éste es un indicador booleano que determina si un error se devuelve al programa si el usuario hace clic en Cancelar . De forma predeterminada, esto es False, para que no se produce un error si el usuario hace clic en Cancelar . Cuando esto se establece en True, se el número de error 32755 (& H7FF3) produce cuando el usuario hace clic en Cancelar . Puede interceptar este error para controlar un caso en que el usuario cancela el cuadro de diálogo.
  • ShowPrinter - éste es el único método de esta clase. Llamar a este método muestra el cuadro de diálogo. Esto acepta el identificador de la ventana de llamada como parámetro. Por ejemplo, el método siguiente devuelve un valor de tipo Boolean:
    printDlg.ShowPrinter Me.hWnd
    						
    ésta puede omitirse. El valor es True si el usuario hace clic Imprimir y False en caso contrario (es decir, si el usuario hace clic en Cancelar ).
Nota : en estos ejemplos, printDlg es una instancia de la clase está contenida en este archivo DLL. Se declara mediante el siguiente código:
Dim printDlg As PrinterDlg
Set printDlg = New PrinterDlg
				

Pasos para crear el ejemplo

Para crear una aplicación de ejemplo que utilizará el archivo DLL para determinar las preferencias del usuario y, a continuación, vuelva a escribirlos en la ventana depuración, siga estos pasos:
  1. En Microsoft Visual Basic, cree un EXE estándar nuevo proyecto. De forma predeterminada, se crea Form1.
  2. En el menú proyecto , haga clic en referencias .
  3. Seleccione Microsoft VB impresora Dialog(PSS) y, a continuación, haga clic en Aceptar .
  4. Agregar un control CommandButton al formulario. De forma predeterminada, se crea Command1 .
  5. Haga doble clic en Command1 .
  6. Pegue el código siguiente en el evento Command1_Click :
    Dim printDlg As PrinterDlg
    Set printDlg = New PrinterDlg
    ' Set the starting information for the dialog box based on the current
    ' printer settings.
    printDlg.PrinterName = Printer.DeviceName
    printDlg.DriverName = Printer.DriverName
    printDlg.Port = Printer.Port
    
    ' Set the default PaperBin so that a valid value is returned even
    ' in the Cancel case.
    printDlg.PaperBin = Printer.PaperBin
    
    ' Set the flags for the PrinterDlg object using the same flags as in the
    ' common dialog control. The structure starts with VBPrinterConstants.
    printDlg.Flags = VBPrinterConstants.cdlPDNoSelection _
                     Or VBPrinterConstants.cdlPDNoPageNums _
                     Or VBPrinterConstants.cdlPDReturnDC
    Printer.TrackDefault = False
    
    ' When CancelError is set to True the ShowPrinterDlg will return error
    ' 32755. You can handle the error to know when the Cancel button was
    ' clicked. Enable this by uncommenting the lines prefixed with "'**".
    '**printDlg.CancelError = True
    
    ' Add error handling for Cancel.
    '**On Error GoTo Cancel
    If Not printDlg.ShowPrinter(Me.hWnd) Then
        Debug.Print "Cancel Selected"
        Exit Sub
    End If
    
    'Turn off Error Handling for Cancel.
    '**On Error GoTo 0
    Dim NewPrinterName As String
    Dim objPrinter As Printer
    Dim strsetting As String
    
    ' Locate the printer that the user selected in the Printers collection.
    NewPrinterName = UCase$(printDlg.PrinterName)
    If Printer.DeviceName <> NewPrinterName Then
        For Each objPrinter In Printers
           If UCase$(objPrinter.DeviceName) = NewPrinterName Then
                Set Printer = objPrinter
           End If
        Next
    End If
    
    ' Copy user input from the dialog box to the properties of the selected printer.
    Printer.Copies = printDlg.Copies
    Printer.Orientation = printDlg.Orientation
    Printer.ColorMode = printDlg.ColorMode
    Printer.Duplex = printDlg.Duplex
    Printer.PaperBin = printDlg.PaperBin
    Printer.PaperSize = printDlg.PaperSize
    Printer.PrintQuality = printDlg.PrintQuality
    
    ' Display the results in the immediate (Debug) window.
    ' NOTE: Supported values for PaperBin and Size are printer specific. Some
    ' common defaults are defined in the Win32 SDK in MSDN and in Visual Basic.
    ' Print quality is the number of dots per inch.
    With Printer
        Debug.Print .DeviceName
        If .Orientation = 1 Then
            strsetting = "Portrait. "
        Else
            strsetting = "Landscape. "
        End If
        Debug.Print "Copies = " & .Copies, "Orientation = " & _
           strsetting
        If .ColorMode = 1 Then
            strsetting = "Black and White. "
        Else
            strsetting = "Color. "
        End If
        Debug.Print "ColorMode = " & strsetting
        If .Duplex = 1 Then
            strsetting = "None. "
        ElseIf .Duplex = 2 Then
            strsetting = "Horizontal/Long Edge. "
        ElseIf .Duplex = 3 Then
            strsetting = "Vertical/Short Edge. "
        Else
            strsetting = "Unknown. "
        End If
        Debug.Print "Duplex = " & strsetting
        Debug.Print "PaperBin = " & .PaperBin
        Debug.Print "PaperSize = " & .PaperSize
        Debug.Print "PrintQuality = " & .PrintQuality
        If (printDlg.Flags And VBPrinterConstants.cdlPDPrintToFile) = _
           VBPrinterConstants.cdlPDPrintToFile Then
             Debug.Print "Print to File Selected"
        Else
             Debug.Print "Print to File Not Selected"
        End If
        Debug.Print "hDC = " & printDlg.hDC
    End With
    Exit Sub
    '**Cancel:
    '**If Err.Number = 32755 Then
    '**    Debug.Print "Cancel Selected"
    '**Else
    '**    Debug.Print "A nonCancel Error Occured - "; Err.Number
    '**End If
    					
  7. Presione la tecla F5 para iniciar la depuración y para iniciar la aplicación. Haga clic en Command1 para abrir el cuadro de diálogo Imprimir .
  8. Después de volver desde el cuadro de diálogo Imprimir , busque en la ventana Depuración el resultado que devolvió.
Nota : quite marca de si desea que un error específico que se provoca y controla cuando el usuario hace clic en Cancelar (similar al comportamiento que se produce con el control CommonDialog ), comentario las líneas que llevan como prefijo "' **".

Referencias

Para obtener información adicional sobre cómo usar el cuadro de diálogo impresión en Visual Basic, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
173981  (http://support.microsoft.com/kb/173981/EN-US/ ) PRB: Diferencias de comportamiento del cuadro de diálogo Imprimir en diferentes plataformas
Para obtener información adicional sobre la configuración de impresora, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
190218  (http://support.microsoft.com/kb/190218/EN-US/ ) Cómo: Recuperar la configuración de un controlador de impresora
194789  (http://support.microsoft.com/kb/194789/EN-US/ ) Cómo: Determinar PaperBins disponibles con DeviceCapabilities de la API

La información de este artículo se refiere a:
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
Palabras clave: 
kbmt kbdownload kbcmndlgprint kbfile kbhowto kbhowtomaster kbsample KB322710 KbMtes
Traducción automáticaTraducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 322710  (http://support.microsoft.com/kb/322710/en-us/ )
 

Seleccione idioma