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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-06-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 15
David Va por buen camino
Smile Hay alguna manera de imprimir el contenido de un Listbox

Hola

Tengo un ListBox , que relleno de esta manera :
Código Delphi [-]
var
 mivariable : TStrings;
begin
   // Obtengo los valores en mivariable
  ListBox1.AddStrings(mivariable);
end;

Se muestra el contenido de listbox , una serie de lineas .

La pregunta es , hay alguna manera de imprimir el contenido del listBox . Estoy mirando por ahí y no veo forma de hacerlo.

Un saludo.
Responder Con Cita
  #2  
Antiguo 29-06-2007
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
n:Integer;
begin
 for n:=0 to listbox1.Items.Count -1 do
 begin
 Form1.Canvas.Textout(100,n*20, listbox1.Items.Strings[n]);
 end;

En vez de Form1, pones Printer, tienes que utilizar la Unidad Printers para que te funcione correctamente.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 29-06-2007
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 15
ixMike Va por buen camino
Yo utilizo esto:

Código Delphi [-]
Procedure Imprimir(Lista: TStrings);
var
tx: TextFile;
n: integer;
begin
AssignPrn(Printer, tx);
Rewrite(tx);
Printer.NewDoc;
for n:=0 to Lista.Count-1 do
  begin
  WriteLn(tx, Lista[n]);
  end;
Printer.EndDoc;
CloseFile(tx);
end;

De todas formas, este código lo he puesto un poco de memorieta, y no estoy seguro de que esté completamente bien. Si alguien encuentra algún fallo, por favor, lo comunique.

Salu2
Responder Con Cita
  #4  
Antiguo 30-06-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 15
David Va por buen camino
La realidad es que ninguno de los dos códigos me funciona , el de ixMike no compila y el de marcoszorrilla , si compila pero luego da un error que dice : "Printer is not currently printer"
Responder Con Cita
  #5  
Antiguo 30-06-2007
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus,Printers,DB, ToolWin, ComCtrls, Buttons, StdCtrls;

procedure TForm1.Button1Click(Sender: TObject);
var
n:Integer;
begin
Printer.BeginDoc;
 for n:=0 to listbox1.Items.Count -1 do
 begin
Printer.Canvas.Textout(100,n*20, listbox1.Items.Strings[n]);
 end;

Printer EndDoc;

Pues te tiene que funcionar puesto que yo le he usado durante mucho tiempo para imprimir recibos y medidas no estándar.

Un Salduo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #6  
Antiguo 30-06-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 15
David Va por buen camino
Si que funciona , pero no imprime bien , pongo 4 lineas por ejemplo y las 3 primeras apenas se ven ,estan como solapadas , la ultima si sale medio bien .

Otra cosa , menos importante , pero que si se puede hacer , mejor y es que imprime directamente , sin preguntar en que impresora quieres imprimir . Esto seria un plus .
Responder Con Cita
  #7  
Antiguo 30-06-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 15
David Va por buen camino
bueno si en lugar de poner n * 20 pongo n * 40 sale bien ya .

Pero eso si , imprime directo
Responder Con Cita
  #8  
Antiguo 30-06-2007
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Como se trata de un ejemplo no me esmerado mucho, pero ese número que has cambiado sería la separación entre una línea y otra por eso al aumentarlo puedes ver bien el texto.

Para más información consulta la ayuda del objeto Printer.

Puedes cambiar el tipo de letra y tamaño etc...

Código Delphi [-]
  Printer.Canvas.Font.Size:=14;
  Printer.Canvas.Font.Name:='Arial';

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #9  
Antiguo 24-07-2007
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 15
ixMike Va por buen camino
Mi código, un poco más completo, está aquí.

Pero igualmente creo que aún tiene un fallo (no sé dónde).
Responder Con Cita
  #10  
Antiguo 24-07-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 6.945
Poder: 21
jhonny Va camino a la fama
Si por X o Y razón, decides no usar las opciones que Marcos y ixMike te han proporcionado, también puedes usar el evento OnNeedData del QuickReport, para recorrer tu ListBox e imprimirlo, de esa manera, podrás tener las ventajas que ofrece un reporteador.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
Responder Con Cita
  #11  
Antiguo 28-10-2007
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 15
ixMike Va por buen camino
Bueno, lo primero, quería decir que el método que puse lo copié de alguna parte, no recuerdo de donde, el caso es que me funcionó cuando lo copié. Pero eso fue hace años, y ya no recordaba muy bien como era. Lo siento.

El caso es que ese fue de cuando era un muy novato. Ahora que lo soy menos, me he dedicado a ojear un poco el código. Lo que hace es tomar la impresora como la salida de un fichero de texto. En la ayuda de Delphi del método AssignPrn está bien explicado. Seguramente el fallo estaba al utilizar también el objetro Printer (BeginDoc, EndDoc...).

Bueno, aquí van unas líneas sencillas y comentadas, que no deberían fallar:

Código Delphi [-]

uses Printers;

{...}

procedure TfrmMain.mImprimirClick(Sender: TObject);
var
Impresona: TextFile;
n: integer;
begin
AssignPrn(Impresora); //Asigna el archivo de texto Impresora a la impresora por defecto
Rewrite(Impresora); //Abre el archivo para escribir, en este caso imprimir
for n:=0 to ListBox1.Items.Count -1 do //para cada item del ListBox
  WriteLn(Impresora, ListBox.Items[n]); //imprime la línea
CloseFile(Impresora); //Cierra el archivo
end;

Espero haber sido claro, y que funcione.

Saludos.
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
existe alguna manera de evitar los archivos ddp (diagramas) en D7 pvizcay Varios 2 02-12-2006 15:44:10
Borrar contenido de un ListBox creus Varios 2 03-11-2006 19:35:39
Hay alguna manera de substituir al BDE administrator David Conexión con bases de datos 6 26-05-2006 15:21:55
Imprimir contenido de un listbox ! Rafe Impresión 1 22-07-2005 08:45:03
existe alguna manera hacer que lo que impimo quede en una tabla? orfeo Impresión 2 05-05-2003 09:55:56


La franja horaria es GMT +2. Ahora son las 13:10:57.


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