Hola, Aunque he visto algunas explicaciones, no consigo que me funcione.
Lo que deseo hacer es que al imprimir lo haga por una de las impresoras de windows que no es la predertemida, y que no sea el usuario quien debe seleccionarla .
Lo que hago es buscar en la lista de impresoras la posicion de la que busco
Una vez encontrada, la cambio con
Printer.PrinterIndex = Posicion
Pero al imprimir continua haciendolo por la predeterminada.
Agradeceria si alguien me puede ayudar.
Gracias

Cambiar impresora desde delphi
Started by
juanhc
, May 09 2012 10:07 AM
4 replies to this topic
#1
Posted 09 May 2012 - 10:07 AM
#2
Posted 10 May 2012 - 06:51 AM
Prueba a CREAR un TPrinterDialog -por código- tras hacer ese cambio, y luego le haces un printerdialog.showmodal a ver si realmente te tomó el cambio o no.
Piensa que si lo que imprimes es a traves de otra aplicación, este cambio NO le afecta pues es solo para lo que delhi imprima, igual un report de tal o cual clase precisa de otra manera de decirle que cambie de impresora, o si quien lo imprime es excel o un PDF la aplicación que lo haga tomará la impresora de windows, no de tu programa.
Piensa que si lo que imprimes es a traves de otra aplicación, este cambio NO le afecta pues es solo para lo que delhi imprima, igual un report de tal o cual clase precisa de otra manera de decirle que cambie de impresora, o si quien lo imprime es excel o un PDF la aplicación que lo haga tomará la impresora de windows, no de tu programa.
#3
Posted 11 May 2012 - 02:15 AM
Gracias por la respuesta.
He encontrado la solucion en otro foro. Club Delphi. La pongo aqui por si alguien la necesita. Realmente es mas facil de lo que parece.
Solo he tenido que poner RPDevice en la clausula uses.
Y seleccionar la impresora deseada rpdev.SelectPrinter(nIMPRE1,True), con esto ya me selecciona la impresora para imprimir con RAVE. nIMPRE1 es el nombre de la impresora creada en windows.
y en rave indico que no salga el dialogo de impresoras.
Os dejo la explicacion original:
>>>>>>>
Bueno, tras mucho buscar al fin encontré la forma de hacer esto. Os lo dejo aquí por si os puede servir.
http://www.nevrona.c...t.aspx?tabid=92
Este link no es la solución, pero es donde empecé a ver la luz.
El tema es le siguiente :
Añade RPDevice en la clausula uses.
Usa la función: rpdev.SelectPrinter(Printername: String;Exact:boolean):boolean
Printername es el nombre de la impresora en windows.
Exact indica si el nombre debe ser exacto o el primero parecido.
La funcion devolverá true si pudo seleccionarla con éxito.
Además con rpdev.SelectBin y rpdev.SelectPaper ya tiene un conjunto potente para evitar el diálogo de impresión.
No se el porque de la nula documentacion de esta librería, pero bueno, despues de releer mil veces lo cutres PDFs del rave ya he perdido la esperanza de encontrar un tuto en plan "te lo voy a explicar partiendo de cero"
Saludos.
>>>>>>>>>>>>>>>>>>>
He encontrado la solucion en otro foro. Club Delphi. La pongo aqui por si alguien la necesita. Realmente es mas facil de lo que parece.
Solo he tenido que poner RPDevice en la clausula uses.
Y seleccionar la impresora deseada rpdev.SelectPrinter(nIMPRE1,True), con esto ya me selecciona la impresora para imprimir con RAVE. nIMPRE1 es el nombre de la impresora creada en windows.
delphi
if rpdev.SelectPrinter(nIMPRE1,True) = False then ShowMessage('Impresora ' + nIMPRE1 + ' no encontrada' );
y en rave indico que no salga el dialogo de impresoras.
delphi
RvSystem1.SystemSetups := RvSystem1.SystemSetups - [ssAllowSetup] ;
Os dejo la explicacion original:
>>>>>>>
Bueno, tras mucho buscar al fin encontré la forma de hacer esto. Os lo dejo aquí por si os puede servir.
http://www.nevrona.c...t.aspx?tabid=92
Este link no es la solución, pero es donde empecé a ver la luz.
El tema es le siguiente :
Añade RPDevice en la clausula uses.
Usa la función: rpdev.SelectPrinter(Printername: String;Exact:boolean):boolean
Printername es el nombre de la impresora en windows.
Exact indica si el nombre debe ser exacto o el primero parecido.
La funcion devolverá true si pudo seleccionarla con éxito.
Además con rpdev.SelectBin y rpdev.SelectPaper ya tiene un conjunto potente para evitar el diálogo de impresión.
No se el porque de la nula documentacion de esta librería, pero bueno, despues de releer mil veces lo cutres PDFs del rave ya he perdido la esperanza de encontrar un tuto en plan "te lo voy a explicar partiendo de cero"
Saludos.
>>>>>>>>>>>>>>>>>>>
#4
Posted 11 May 2012 - 06:31 AM
Supongo que RPDevice es parte de Rave Report.... eso quiere decir que Rave no usa ni la impresora de delphi y por eso modificar el "printer" no hace nada en tu caso.
#5
Posted 11 May 2012 - 11:44 AM
Hola,
Juanhc edite tu post para añadir la etiquetas delphi al codigo.
Por favor utiliza las etiquetas cuando sea necesario.
Saludos,
Juanhc edite tu post para añadir la etiquetas delphi al codigo.
Por favor utiliza las etiquetas cuando sea necesario.
Saludos,