Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-08-2015
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Question Enviar una impresión a una impresora de Red

Buenas. Tengo una impresora de red en la LAN. La misma tiene una IP fija.
Quisiera desde mi aplicación Delphi enviar una impresión hacia ella utilizando la dirección IP.
Utilizo QReport y Delphi XE5.

Gracias.

Santiago.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #2  
Antiguo 13-08-2015
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Si pones un TPrinterDialog, te soluciona parte del trabajo al llamar a PrinterDialog1.Execute().

El usuario elegirá la impresora del desplegable, las opciones de impresión, papel apaisado o no, etc.
Por supuesto después tienes que "recoger" esas opciones que ha seleccionado el usuario y asignarlas a tu documento que vas a imprimir, esto se hace asignando esas propiedades a tu qrPrinter del Quickreport.

A las bravas, en Delphi tienes la clase TPrinters y el printerindex suele ser el índice de la impresora predeterminada en windows. El objeto global es Printers y puedes recorrerlo para saber las impresoras que hay, como se llaman, etc.

Saludos!
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 13-08-2015
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Cita:
Empezado por Lepe Ver Mensaje
Si pones un TPrinterDialog, te soluciona parte del trabajo al llamar a PrinterDialog1.Execute().

El usuario elegirá la impresora del desplegable, las opciones de impresión, papel apaisado o no, etc.
Por supuesto después tienes que "recoger" esas opciones que ha seleccionado el usuario y asignarlas a tu documento que vas a imprimir, esto se hace asignando esas propiedades a tu qrPrinter del Quickreport.

A las bravas, en Delphi tienes la clase TPrinters y el printerindex suele ser el índice de la impresora predeterminada en windows. El objeto global es Printers y puedes recorrerlo para saber las impresoras que hay, como se llaman, etc.

Saludos!
Ah, claro. Perdón. Me faltó aclarar algo.
En este caso puntual, el usuario no tiene tiempo de elegir una impresora desde le formulario de impresoras (TPrinterDialog) puesto que le es muy impráctico porque debe hacer la tarea algo rápido.
En favor de ello, tiene actualmente una impresora asignada a través de un archivo .ini (local) y él no tiene que andar eligiéndola cada 15 segundos de la lista.

La idea era poner en el mismo .ini la dirección IP en lugar del nombre de la impresora actual. Solo que no se como hacer esto.

Santiago.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #4  
Antiguo 13-08-2015
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Para aclarar un poco mas.
La impresora de red está instalada en todas las estaciones.
En este lugar me piden que haya un plan de contingencia rápido acerca de impresoras, si se rompe una, la reemplazamos por otra rápidamente. En favor de ello tengo una impresora de red con una IP fija.
Si le pasa algo a esa máquina, la reemplazo por otra que tengo lista, le pongo la misma IP fija y listo, sigo sin problemas.
El drama es que en este punto Delphi me pide el nombre de la impresora y no una dirección IP.
Cuando hago cambios de impresora la segunda tiene que tener otro nombre, ¿o no?, y tendría que reconfigurar todas las estaciones para que impriman en la nueva. La idea es que no sea así, que solamente cambiando la impresora y poniéndole la misma IP fija, todos sigan imprimiendo sin drama.
Espero haber sido claro.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #5  
Antiguo 13-08-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Usar archivos ini en un entorno de red es totalmente arcaico e impractico.

Yo grabaria todo en la BD, y al reemplazar el equipo actualizas la BD. Eso al margen del tema ip

Ahora la pregunta es, cuando grabas en el ini, como grabas la información de la impresora? Usando el citado TPrinterDialog? Windows debería manejar correctamente los redireccionamientos

Última edición por AgustinOrtu fecha: 13-08-2015 a las 21:35:37.
Responder Con Cita
  #6  
Antiguo 14-08-2015
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Cita:
Empezado por AgustinOrtu Ver Mensaje
Usar archivos ini en un entorno de red es totalmente arcaico e impractico.

Yo grabaria todo en la BD, y al reemplazar el equipo actualizas la BD. Eso al margen del tema ip

Ahora la pregunta es, cuando grabas en el ini, como grabas la información de la impresora? Usando el citado TPrinterDialog? Windows debería manejar correctamente los redireccionamientos
Estoy de acuerdo, es arcaico.
En estos momentos estamos haciendo toda un reingeniería para hacer todo eso y mas.
Pero de momento hay que solucionar el problema y es lo que estoy buscando.

Este sistema está funcionando hace años y para hacer los cambios y "modernizarlo" hay que trabajar bastante en muchas cosas. Así que a veces jugamos de bomberos y apagamos el incendio.

Santiago.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #7  
Antiguo 14-08-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola santiago14.

Podrías intentar mediante SPM

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 14-08-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
En mi modesta opinión estás intentando aplicar una solución en un lugar donde no está el problema. me explico (simplificando mucho).
Un equipo y el software que contiene funciona por capas; Primero está el sistema operativo, luego se instalan programas de caracter general y drivers y por último se instalan aplicaciones como la tuya.

Cuando una aplicación como la tuya(capa 3), necesita imprimir, busca las impresoras instaladas con sus drivers (capa 2) y eso acaba enviando una impresión a través de un cable utilizando llamadas al sistema operativo (Capa1).

Tu problema se produce en la (capa 2) porque ha cambiado la configuración de la impresora (puerto, IP, drivers,...) e intentas resolverlo en la (capa 3).

Tu impresión debe pasar obligatoriamente por las impresoras instaladas. No puedes enviar una impresión a una IP, debes enviarla a una impresora instalada que tendrá una IP. Igual que no puedes enviarla a un puerto distinto o de otro tipo, debes enviarla a una impresora instalada que tendrá un puerto de un tipo u otro configurado.

No se si me explico...
Lo que quiero decir es que (creo) que lo que debes solucionar es, (1) cómo cambiar la configuración de una impresora instalada (desde tu programa) y luego (2) lanzar la impresión de forma normal, no intentar enviar directamente la impresión a una IP distinta.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 14-08-2015
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
Hola a tod@s.

Igual suelto una tontería pero.... ¿por qué no le pones el mismo nombre a la impresora en todos los puestos y la buscas por su nombre? Le asignas el nombre de la impresora al documento en alguna configuración del programa y a volar.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #10  
Antiguo 14-08-2015
Avatar de Luis M.
[Luis M.] Luis M. is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Ripollet - Barcelona
Posts: 212
Poder: 20
Luis M. Va por buen camino
Hola.
No se si te servirá de ayuda, pero te explico un caso parecido.
Tengo un cliente que emite facturas y albaranes muy seguidos y perdia tiempo en
seleccionar las impresoras (una para facturas y la otra para albaranes), y a veces
se equivocaba.
La manera que lo corregí, fué instalando un switch para impresoras y solo tenía que cambiar
de botón según lo que quisiera imprimir (las impresoras las tenía al lado del ordenador).

En la DB del programa guardaba la la configuración de las dos impresoras y según sea el listado
a imprimir se seleccionada una.

Ejemplo:

Código Delphi [-]
var
  cPath: string;
begin
  DMList := TDMList.Create(Self);
  cPath := ExtractFilePath(Application.ExeName);
  DMList.QCAlbaran.Close;
  DMList.QCAlbaran.SQL.Text := 'Select * From calbaran Where Numero = '+
                                           QuotedStr(DM.CAlbaranNUMERO.AsString);
  frxReport1.LoadFromFile(cPath + 'REPORTS\Albaran.fr3');
  DM.Config.Open;
  frxReport1.PrintOptions.Printer := DM.ConfigPRINTER_LISTADOS.AsString;
  frxReport1.PrepareReport(True);
  frxReport1.Print;
  FreeAndNil(DMList);
  DM.Config.Close;
end;

La idea podría ser que teniendo las dos impresoras guardadas en la tabla de
configuración, marcases cual sería la que imprimiría por defecto.
En el caso que una fallase una, te vas a configuración y marcas la otra.
No se si me he explicado bien.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Enviar comandos a la impresora Minotaure Impresión 1 16-03-2009 13:03:18
Enviar Fax con la impresora virtual User_Baja_2 Varios 0 09-10-2008 10:18:20
enviar codigos ESC a impresora JuanHC Impresión 7 07-03-2007 17:25:30
Impresion Directa Ala Impresora armando Impresión 1 29-08-2006 23:08:14
impresion directa a impresora e_god Impresión 2 12-01-2005 20:14:43


La franja horaria es GMT +2. Ahora son las 18:13:40.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi