Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Imprimir info de un StringGrid con un QuickRep (https://www.clubdelphi.com/foros/showthread.php?t=29665)

Pirucho 27-01-2006 22:59:03

Imprimir info de un StringGrid con un QuickRep
 
hola
necesito imprimir la informacion que tengo en un StringGrid, y estoy usando QuickRep,

Por ahi encontre un codigo:

Cita:

procedure TForm1.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
CurrentItem := 0; // Puntero de la lista a imprimir
//***
PrintReport := SomeStringList.Count 0; // Para verificar si hay algo para imprimir
//***
end;

procedure TForm1.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
begin
if CurrentItem < SomeStringList.Count then
QRLabel1.Caption := SomeStringList[CurrentItem]; // Impresion
Inc(CurrentItem); // Incrementa el Puntero en uno
MoreData := CurrentItem <= SomeStringList.Count; // Para indicar la Finalizacion del Reporte
end;


Pero me da un problema en ***, agradeceria su ayuda...
es que no entiendo porque si esa variable es boolean y le asigno un integer...

Si Alguien tiene un codigo que pueda postear...
Gracias:D

roman 27-01-2006 23:09:36

Realmente esto nada tiene que ver con QuickReport ni StringGrids.:mad:

Y tú mismo sabes la respuesta:

Cita:

Empezado por Pirucho
es que no entiendo porque si esa variable es boolean y le asigno un integer...

así que ni siquiera entiendo qué estás preguntando.

// Saludos

Pirucho 28-01-2006 00:09:00

nada, ese codigo con esa diferencia de tipos mo lo encontre en un foro por ahi...

Lo que necesito es poder imprimir la informacion que estan en las celdas de un StringGrid utilizando QuickRep u otro metodo...

Imagina que tengo una factura con 4 columnas: Codigo, cantidad, precio y total... Pero las filas son infinitas, necesito imprimir esta factura que se encuentra en el StringGrid

Gracias...

ZRR 01-02-2006 19:54:15

Puedes poner en tu componente TQuickRep 1 DetailBand (TQRBand) y dentro del DetailBand 4 TQRLabel. En el metodo QuickRep1BeforePrint inicializas tu variable global "CurrentItem" con el que controlarás la linea de tu StringGrid donde se te encuentras al ir imprimiendo cada renglon:

Código:

procedure TForm1.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
CurrentItem := 0; // Puntero de la lista a imprimir
end;
...
//por ejemplo, si los datos estan en un arreglo:
procedure TForm1.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
begin
 //si hay mas datos, QuickReport imprimirá otra banda de detalle
 MoreData := CurrentItem < High(arr);
 if MoreData then
 begin
  QRLCliente.Caption:=arr[CurrentItem,0];
  QRLFecha.Caption:=arr[CurrentItem,1];
  QRLNumero.Caption:=arr[CurrentItem,2];
  QRLImporte.Caption:=arr[CurrentItem,3];
 end;
 Inc(CurrentItem);
end;

Con algo similar imprimirá el contenido del StringGrid.
Espero te sirva

Yo lo solucioné así pero tengo problemas si intento agrupar por Cliente por ejemplo, no he podido agrupar que cada que sea un cliente diferente, muestre la suma del importe para el cliente, imprima el encabezado de las columnas para el siguiente cliente y su total y asi sucesivamente, Alguien sabe como hacerlo?

Saludos

Roilo 10-04-2006 17:27:31

Saludos
 
Un abraso al foro:
Que pasaría si la cantidad de columnas del StrigGrid fueran indeterminadas, es decir que no sea un número fijo (4 en el caso de Pirucho).

josejm 23-04-2006 18:42:55

Creación de componentes en ejecución.
 
Si no supieramos el numero de columnas a imprimir porque la stringgrid es de columnas variables por el usuario tendriamos que crear los TQRLabel en tiempo de ejecución:
Algo así:
este codigo seria en el create o antes del preview o del print del report.
for x:=0 to stringgrid.colcount-1 do begin
qlabeltemp:=tqrlabel.create(detalband);
qlabeltemp.tag:=x; //Asi identificamos a la columna que le corresponde
end;

luego en el oneeddata pondriamos algo asi.
for x:=0 to detailband.componentscount -1
with detailband.components[x] as tqrlabel do begin
caption:=stringgrid.cells[tag,linea];
end;
end;

Bueno espero que este codigo sirva de algo a alguien...


La franja horaria es GMT +2. Ahora son las 04:50:30.

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