PDA

Ver la Versión Completa : Asignar impresora QuickReport


andressanchez
18-12-2009, 18:33:13
Hola foristas!

Tengo una aplicacion desarrollada en Delphi 7, Firebird 2.0, ejecutandose en Windows XP y utilizo QuickReport.

Dicha aplicacion tiene un modulo que imprime las facturas en una impresora de tickets de 56mm, la cual es la impresora que esta de manera predeterminada en windows. El detalle esta en que al momento de ver un preview de un listado en formato 8.5 x 11 me muestra el preview en formato de 56mm.

Como solamente se utiliza la impresora de tickets para las facturas he decidido hacer una configuracion en el sistema que me permita guardar cual es la impresora de tickets y luego asignarle por codigo a QuickReport por cual impresora debe imprimir pero no se como hacer esto. He buscado en el foro temas relacionados y no he podido encontrarlo.

Se tambien que quickReport tiene un procedimiento llamado printerSetup que muestra la ventana Imprimir donde el usuario puede elegir la impresora y otras opciones mas. Pero lo que busco es optimizar el proceso de facturar y que el enviar a imprimir a la impresora de tickets sea transparente para el usuario.

Espero puedan ayudarme,

Gracias de antemano.-

bubba
18-12-2009, 18:56:48
Hola foristas!

Tengo una aplicacion desarrollada en Delphi 7, Firebird 2.0, ejecutandose en Windows XP y utilizo QuickReport.

Dicha aplicacion tiene un modulo que imprime las facturas en una impresora de tickets de 56mm, la cual es la impresora que esta de manera predeterminada en windows. El detalle esta en que al momento de ver un preview de un listado en formato 8.5 x 11 me muestra el preview en formato de 56mm.

Como solamente se utiliza la impresora de tickets para las facturas he decidido hacer una configuracion en el sistema que me permita guardar cual es la impresora de tickets y luego asignarle por codigo a QuickReport por cual impresora debe imprimir pero no se como hacer esto. He buscado en el foro temas relacionados y no he podido encontrarlo.

Se tambien que quickReport tiene un procedimiento llamado printerSetup que muestra la ventana Imprimir donde el usuario puede elegir la impresora y otras opciones mas. Pero lo que busco es optimizar el proceso de facturar y que el enviar a imprimir a la impresora de tickets sea transparente para el usuario.

Espero puedan ayudarme,

Gracias de antemano.-

Hola Andres,

El año pasado me pasó eso mismo a mí (o parecido, sólo que yo debía imprimir en la impresora de tickets o la de facturas (A4), según el tipo de documento -Ticket de caja o factura-), y encontré la solución haciendo lo siguiente y teniendo en la aplicación el nombre de Windows de cada impresora. Se ha de utilizar la siguiente Unit: Printers (para que reconozca el objeto Printer), y los
campos de mi aplicación que deberás cambiar en la tuya por tus campos o variables son:

tbCabTicketTipo: tipo String, indica "T" = Ticket caja, "F" = Factura

tbParametroImpresoraTickets, tipo String, indica el nombre en Windows de la impresora de tickets.

tbParametroImpresoraFacturas, tipo String, indica el nombre en Windows de la impresora de facturas.


for n := 0 to Printer.Printers.Count - 1 do begin
if tbCabTicketTipo.Value = 'T' then
begin
if tbParametroImpresoraTickets.Value = Printer.Printers.Strings[n] then begin
Printer.PrinterIndex := n;
end;
end
else begin
if tbParametroImpresoraFacturas.Value = Printer.Printers.Strings[n] then begin
Printer.PrinterIndex := n;
end;
end;
end;


Espero que te sirva!

Saludos

andressanchez
18-12-2009, 19:32:23
Muchas gracias por tu respuesta bubba.

Voy a probar a ver que tal me va. Te dejo saber cuando lo implemente.

Mil gracias.-

afunez2007
18-12-2009, 20:10:29
Yo lo que normalmente hago es que tengo una pantalla donse configuro que impresoras utilizan que reportes, y antes de imprimir el reporte leo a configuracion para ver que impresora debe utilizar:

Uses Printers;

frmReport.QuickReport1.PRINTERSETTINGS.PRINTERINDEX :=printer.printers.Indexof(Config_gral.CBx_Reportes.Text);
frmReport.QuickReport1.Preview;



Espero te sirva

Saludos

andressanchez
30-12-2009, 01:51:19
Muchas gracias bubba y afunez2007 por sus respuestas
tan certeras. Ambos me ayudaron a resolver el problema.

Lo que hice fue una parte de configuracion donde guardo la impresora de tickets. Luego la pantalla donde imprime en dicha impresora se la asigno al quick report y listo.

for n := 0 to Printer.Printers.Count - 1 do
begin
if b.CompaniaIMPRESORA_TICKETS.Value = Printer.Printers.Strings[n] then
begin
impresora := n;
end;
end;
FrepFactura := TFrepFactura.Create(Self);
FrepFactura.QuickRep1.PrinterSettings.PrinterIndex := impresora;
FrepFactura.QuickRep1.Print;
FrepFactura.Free;


Problema resuelto. Un Millon de gracias.-