Delphi - Elegir impresora en PrintDialog

 
Vista:

Elegir impresora en PrintDialog

Publicado por joselito (177 intervenciones) el 13/07/2005 11:57:27
Hola a todos;
Bueno. Mi problemilla es el siguiente.

En una pantalla de configuración, tengo una serie de opciones, cada una de las cuales es configurable para que a la hora de imprimir, se impriman por una o por otra impresora, es decir, que para imprimir cuartillas, lo haga por la Impresora 1, y para imprimir Folios por la 2, y si quiere imprimir facturas, lo haga por la 3... etc... etc... Es totalmente configurable la Impresora para cada uno de los módulos de la aplicación.

El caso, es que a la hora de imprimir en uno de los módulos, el cual ya tiene una impresora predeterminada para ese módulo, y le doy la opción a que cambie de impresora, y que no tome la que está predeterminada por defecto, la que se ha especificado en la configuración, mediante un PrintDialog, no me hace ni caso. Sigue imprimiendo por la que se ha guardado como predeterminada para ese módulo, aunque en el PrintDialog he seleccionado otra impresora distinta.

¿Cómo puedo conocer qué impresora ha seleccionado en el PrintDialog?. ¿Cómo puedo decirle al programa que imprima por la que ha seleccionado, y no por la que está predeterminada en la configuración?. El caso es que elijas la impresora que elijas, siempre imprime con la que se ha especificado en la configuración.

Por eso, quizá debería conocer en el PrintDialog, qué impresora ha seleccionado.

Muchas gracias.
Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Elegir impresora en PrintDialog

Publicado por DIEGO (8 intervenciones) el 14/07/2005 10:08:20
Hola Jose, yo tengo alguna que otra pantalla en la utilizo al igual que tú, un PrintDialog para cambiar la impresora por la que el usuario imprime sus documentos en función de lo que quiere imprimir.

Para que puedas saber que impresoras tiene el usuario instaladas en su equipo, tenemos un array llamado "Printers" que se puede recorrer y acceder a los elementos del mismo como en cualquiera de los componentes de Delphi tipo Items...

** Printer.PrinterIndex: nos dice la impresora por defecto que esta seleecionada en el equipo de nuestro usuario.

** Printer.Printers.Strings [i]: nos dice el nombre de la impresora

** Printer.Printers.Count: nos dice el número de impresoras que estan instaladas en el equipo de nuestro usuario.

** Etc....

Por ejemplo en una de mis ventanas para buscar un tipo de impresora llamada RIGHTFAX, utilizo el siguiente bucle:

Encontrada_Imp:= False;

while ((not Encontrada_Imp ) and
(i <= Printer.Printers.Count-1)) do
if Pos('RIGHTFAX', UpperCase(Printer.Printers.Strings [i])) <> 0 then
Encontrada_Imp:= True
else
inc(i);

Espero que te sirva de ayuda

Saludos
Diego.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gracias... PERO....

Publicado por joselito (177 intervenciones) el 14/07/2005 10:51:25
Gracias, Diego;

Lo de conocer las impresoras en mi equipo, sí que lo he hecho, y ya tengo los nombres y demás... Pero el tema es que NO ME IMPRIME por la que yo elijo.
Me da igual la que elija, porque siempre me imprime por la misma, que es la que tiene PREDETERMINADA en Windows en el PC.

Ni siquiera por código, estableciendo PrinterIndex := Impresora, o estableciendo con PrinterSettings.PrinterIndex := Impresora en el Report... nada de nada. Me sigue imprimiendo por la que está predeterminada. ¿¿¿Por qué ??? .... ¿¿Acaso hay que ponerla como predeterminada para poder imprimir ??? ¿Como puedo solucionar esto??.

Espero que me eches una mano.

Muchas gracias.
JOSE.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gracias... PERO....

Publicado por DIEGO (8 intervenciones) el 14/07/2005 13:13:50
Hola Jose, ¡¡ que cosa más rara te esta pasando !!

Si tú en la ventana (On Create, On Show) pones Printer.PrinterIndex:= 2 (donde 2 es el número de la impresora por la que quieres imprimir), en ese momento estas cambiando la impresora por defecto del Pc, de tal forma que si sales de la pantalla y no reestableces "Printer.PrinterIndex" al número de la impresora inicial, todo lo que imprimas irá siempre por la impresora 2.

¿ Por que no pruebas a asignar directamente "Printer.PrinterIndex" en el On Create de tu ventanta ? y luego mandas imprimir directamente algo de prueba, a ver que pasa.

Supongo que la ventana en cuestión es tuya, es decir la has creado tú, porque si las has "heredado" de otro programador, no vaya a ser que haya por ahí alguna llamada de inicialización (a mi me ha pasado), que lo que hace es asignar la impresora por defecto (en alguna unit por ahí perdida).

Saludos
Diego
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar