Resumen Seleccionar diferentes impresoras

Mensaje enviado por "Grupo VB" <vbgroup@eci9.atenas.inf.cu>

Hola amigo, ese es un problemita que me golpeo mucho, hasta que encontre la solucion los otros dias. En la bibliografia encuentras ejemplos pero estan erroneos. Si es que estas utilizando el CommonDialog.
En la coleccion printers no tienes que buscar absolutamente nada, solo tienes que trabajar con el CommonDialog directamente. Ahora la solucion esta en los Flags del CommonDialog.
Por ejemplo:

Dialogo.Flags = cdlPDReturnDC + cdlPDUseDevModeCopies + cdlPDNoWarning

donde

cdlPDReturnDC-Devuelve uncontexto de dispositivo para la impresora seleccionada en el cuadro de diálogo.Este Flag hace que el seleccionar una impresora en el Dialogo, esta sea la que se seleccione en la coleccion printers.

cdlPDUseDevModeCopies -Si un controlador de impresora no acepta varias copias, el establecimiento de este indicador deshabilita el control Número de copias del cuadro de diálogo Imprimir. Si un controlador no acepta varias copias, el establecimiento de este indicador señala que el cuadro de diálogo almacena el número de copias solicitado en la propiedad Copies.

cdlPDNoWarning - Evita que aparezca un mensaje de advertencia cuando no hay ninguna impresora predeterminada.

Utilizando el flags cdlPDReturnDC automaticamente el Common Dialog te deja de devolver la Impresora Default, que es lo que normalmente hace. Despues puedes acceder a la Impresora directamente que esta, va a ser , la Impresora que seleccionaste en el commondialog. Ejemplo

NumCopias = Printer.Copies
HdcPrinter = Printer.hDC
StrImpresora = Printer.DeviceName

Te repito, esto lo hace automaticamente el commondialog, por lo que no necesitas recorrer la coleccion printers para buscar la impresora seleccionada, ya que este control te la selecciona por defecto y te la lleva al inicio de la coleccion para que le utilices.
Ahora puedo mandar a imprimir.

Printer.FontName = "Arial"
Printer.Print " Hola " 'Imprimo Hola con la Impresora
seleccionada en el CommonDialog
Printer.EndDoc


Bueno esto es lo que he investigado hasta el momento, yo he tenido varios problemas con esto, que hasta me he ido por la API para los Dialogos de Impresion. Despues que utilizo este metodo, no me ha fallado. Quizas exista otro, pero no lo he encontrado.
Por ejemplo, no he encontrado la forma de mandar varias copias a una impresora que no la acepte puesto el CommonDialog devuelve 1 siempre. Eso si es otro problemita. En fin creo que lo mas profesional es crear un Cuadro de Impresion tu mismo y tener el dominio absoluto.

Saludos/Best Regards
-------------------------------------------------
Ing. Eyzen Medina
Analisis y Diseño de Sistemas
Email: Eyzen@eci9.atenas.inf.cu



Resumen Resumen

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com