Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-02-2010
jandro jandro is offline
Miembro
 
Registrado: jul 2007
Posts: 56
Poder: 17
jandro Va por buen camino
Imprimir contenido TListBox

Hola a todos!!

Alguien conoce alguna funcion para poder imprimir el contenido de un ListBox??

Yo en este caso en particular tengo una lista de personas y su respectiva foto dentro del ListBox.

Gracias de antemano.
Saludos.
Responder Con Cita
  #2  
Antiguo 01-02-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Vaya.. desconocia que en ListBox se pudiera poner Imagenes..humm .
Bueno para poder imprimir el contenido de un ListBox, tienes muchas Opciones..entre las cuales te puedo mencionar:
1.-Mandar a imprimir directamente al puerto de la Impresora, esto requiere un poco de practica y la programcion es un poco tediosa.
2.- Utilizar algun reporteador (Quick Report,Rave Report, fast Report,etc,etc,) para mandar a Imprimir.
3.- Utilizar algun Componente de la VCL como mediador para imprimir.
4.- Otro.
Si utilizas la Primera Opcion puedes utilizar el Objeto Printer de la unidad Printers. aqui un codigo ejemplo:
Código Delphi [-]
Uses ...,...,...,Printers;//<--
...
...
...
procedure TForm1.Button2Click(Sender: TObject);
begin
 with Printer do
  begin
    BeginDoc;
    Canvas.TextRect(Rect(200,200,PageWidth-200,PageHeight-200),
                    200, 200, ListBox1.Items.Text);//Imprimo en esa cordenada
    EndDoc;
  end;
end;

Si eliges la segunda Opcion tendras que Hacerte un reporte utilizando los componentes y herramientas que tu reporteador te Brinda.

En el caso que elijas la tercera opcion que te estoy proponiendo, pues se me ocurre que utilizes el componente TRichEdit como mediador ya que posee un metodo para imprimir. Por ejemplo:
Código Delphi [-]
Uses ...,...,...,ComCtrls;//<--
...
... 
procedure TForm1.Button1Click(Sender: TObject);
var aux:TRichEdit;
begin
  aux:=TRichEdit.Create(Application);// creo un objeto TRichEdit
  aux.Parent:=Form1;//Pongo a Mi Formulario como padre del objeto Aux
  aux.Visible:=False;// Hago no visible al objeto Aux
  aux.Lines.Assign(ListBox1.Items);//Asigno los item que tengo en el ListBox al objeto Aux
  aux.Print('Mi Titulo de Impresion');//Mando a imprimir
  aux.Free;//Destruyo  y Libero el Objeto Aux.
end;
Espero te sea de utilidad.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 01-02-2010 a las 16:51:11.
Responder Con Cita
  #3  
Antiguo 01-02-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Cita:
Empezado por rgstuamigo Ver Mensaje
1.-Mandar a imprimir directamente al puerto de la Impresora, esto requiere un poco de practica y la programcion es un poco tediosa.
Si tienes una impresora local, o mappeado el puerto de una impresora remota, y solo quieres imprimir texto sin formato, puedes hacer esto:
Código Delphi [-]
MiListBox.Items.SaveToFile('LPT1')


PD: Mil disculpas nuevamente al compañero rgstuamigo que le edité accidentalmente el post y volvió a escribirlo con lujo de detalles.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #4  
Antiguo 01-02-2010
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.233
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
Cita:
Empezado por jandro Ver Mensaje
Yo en este caso en particular tengo una lista de personas y su respectiva foto dentro del ListBox.
A mi en particular tampoco me ha quedado claro cómo tienes la imagen dentro del ListBox.
¿Puedes explicarlo?
¿Se debe imprimir la foto además del texto? Varía la forma de hacerlo asi es así.
__________________
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
  #5  
Antiguo 01-02-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por delphi.com.ar Ver Mensaje
Si tienes una impresora local, o mappeado el puerto de una impresora remota, y solo quieres imprimir texto sin formato, puedes hacer esto:
Código Delphi [-]MiListBox.Items.SaveToFile('LPT1')

Saludos!
Interesante respuesta , pero tal parece que ami no me funciona , tengo una impresora local, pero al mandar a imprimir con el puerto LPT1, simplemente la aplicacion se congela y no hace nada.
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #6  
Antiguo 01-02-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Cita:
Empezado por rgstuamigo Ver Mensaje
Interesante respuesta , pero tal parece que ami no me funciona , tengo una impresora local, pero al mandar a imprimir con el puerto LPT1, simplemente la aplicacion se congela y no hace nada.
No comprendo porque no funciona, básicamente es lo mismo que imprimir en el puerto a la vieja usanza.
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #7  
Antiguo 01-02-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Question

Cita:
Empezado por delphi.com.ar Ver Mensaje
No comprendo porque no funciona, básicamente es lo mismo que imprimir en el puerto a la vieja usanza.
Pues lo he probado amigo Fede, pero no me imprime...Me gustaria saber si tú lo has probado y si te funciona..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #8  
Antiguo 01-02-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Digamos.. no lo porbé en el momento que escribí el hilo, pero lo hice infinidad de veces!... En este momento no tengo una impresora física, pero "mappie" el "Microsoft XPS Document Writer" en LPT1 y funcionó sin problemas.

¿Que sistema operativo tienes instalado?

Prueba si te funciona desde la línea comandos:
Código:
dir > lpt1
Prueba alguno de estos ejemplos:
Imprimir un archivo de texto
Imprimir una Línea

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #9  
Antiguo 01-02-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Pues te cuento amigo Fede que no me funciona ninguno de esos ejemplos..tal parece algo debo tener mal...como te dije anteriormente la aplicacion se congela e incluso desde la linea de Comando no me hace nada.
Cuando lo hago desde delphi ni si quiera se deja cerrar el formulario, tengo que ir al IDE y terminar la aplicacion Run>Program Reset y a veces me sale el siguiente error ---------------------------
Cita:
Project1
---------------------------
Insufficient memory for this operation.
---------------------------
Aceptar
---------------------------
Y tal parece que no se deja Resetear ni correr nuevamente pues me sale este otro error
Cita:
---------------------------
Error
---------------------------
Debugger fatal error during process reset:'Unable to terminate process:Acceso denegado'.Please save you work and
restart Delphi.
---------------------------
OK
---------------------------
Asi que ni modo.. no me queda otra que reiniciar Delphi de nuevo.

Por si las dudas utilizo Windows XP Profesional con el Service Pack 2 y Delphi 7.

Talves alguien que tenga Delphi 7 y windows XP lo pueda probar y nos comenta.
No se si es sólo a mi a quien le pasa esto, por eso te pregunte si lo habias probado, es decir llevar de la teoria a la practica.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #10  
Antiguo 01-02-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Cita:
Empezado por rgstuamigo Ver Mensaje
...incluso desde la linea de Comando no me hace nada....
Leyendo esto sacaría a Delphi de la disolución, estas seguro que en la configuración de la impresora tienes capturado el puerto LPT1 ?... de ser así buscaría algún problema por el lado de los controladores del dispositivo, o del mismo puerto.
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #11  
Antiguo 01-02-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por delphi.com.ar Ver Mensaje
Leyendo esto sacaría a Delphi de la disolución, estas seguro que en la configuración de la impresora tienes capturado el puerto LPT1 ?... de ser así buscaría algún problema por el lado de los controladores del dispositivo, o del mismo puerto.
Jee, jee..en realidad no tenia Capturado el puerto LPT1 ami impresora aunque ya tenia su puerto configurado era un puerto USB (virtual printer port for USB ) que supongo es el que se pone por defecto; lo he cambiado por el LPT1 para hacer la prueba, aunque la aplicacion ya no se congela, pues de todas formas igual no se puede imprimir, tal parece, como dices tú puede ser un problema de Driver..
Por si acaso mi Impresora es una Canon PIXMA IP1700.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #12  
Antiguo 02-02-2010
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.232
Poder: 20
ElKurgan Va camino a la fama
Una solución consiste en redirigir la salida del puerto paralelo a la impresora usb. Eso se consigue con el comando NET USE (si tienes Windows XP o superior).

Por ejemplo, yo tengo en mi PC (denominado "CASA") la impresora CANON a la que he puesto en propiedades que es una impresora compartida llamada "MiCanon". La redirección se haría desde la línea de comandos con esta instruccíón:

C:\>net use LPT1 \\CASA\MiCanon

Por lo menos me funciona así
Un saludo
Responder Con Cita
  #13  
Antiguo 10-02-2010
jandro jandro is offline
Miembro
 
Registrado: jul 2007
Posts: 56
Poder: 17
jandro Va por buen camino
Antes de nada, perdon por tardar tanto pero he estado fuera de casa todo este tiempo.

Para los que querian saber como metia imagenes en el ListBox aqui dejo la funcion del evento DrawItem del ListBox

procedure TfMain.MemoListadoDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with (Control as TListBox) do begin
begin
MemoListado.Canvas.FillRect(Rect);
MemoListado.Canvas.TextOut(Rect.Left+ImageList1.Width+5,Rect.Top,Memo Listado.Items[Index]);
ImageList1.Draw(MemoListado.Canvas,Rect.Left,Rect.Top,Index);
end;
end;

Las imagenes la coge de un ImageList en BMP.

He probado varios metodos de impresion que aqui habeis puesto pero ninguna imprime las imagenes. Alguna idea de como hacerlo??

Gracias a todos de nuevo
Saludos.

P.D.: Alguien me puede decir como era para que el codigo saliera bonito??
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
TListBox contenido (A),(B) a dos campos de texto? THACKER Varios 2 09-11-2009 20:34:40
imprimir el contenido de un formulario pablopessoa Impresión 3 11-10-2008 19:37:58
Imprimir contenido de dbgrid FGarcia Varios 2 22-05-2007 17:44:01
imprimir el contenido de un tstringgrid xias Lazarus, FreePascal, Kylix, etc. 3 20-01-2006 19:55:36
Imprimir contenido de un listbox ! Rafe Impresión 1 22-07-2005 09:45:03


La franja horaria es GMT +2. Ahora son las 22:23:29.


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