Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Duda con Qreport (https://www.clubdelphi.com/foros/showthread.php?t=58430)

joanajj 20-07-2008 20:16:43

Duda con Qreport
 
Buenas a todos!!!

Tengo la siguiente cuestión para ver si alguién me puede ayudar...

En un quick report, para imprimir una serie de datos en una banda detalle basta con colocar los qrdbtext,apuntar cada uno a un canmpo y filtrar los datos a mostrar, así que si quiero mostrar x registros lo puedo hacer perfectamente. Hasta ahí todo bien...
La duda me surge: si quisiera mostrar unos datos en una banda detail sin que estos pertenezcan a una base de datos... Por ejemplo mostrar los números del uno al diez.
1
2
3
4
....

intento hacerlo usando el befor print del qrband y solo me muestra el último número de un bucle del 1 al 10... es decir solo muestra el 10, y me interesa que los muestre todos,desde el 1 al 10, no sé si me he expresado bien...
La historia es que debo de hacer una serie de cálculos, que puede dar como resultado 10,20,30 etc resultados y quiero que me los muestre en un report, para poder imprimirlos.

Muchas gracias...

coso 20-07-2008 20:30:16

Hola, puedes probar el evento OnNeedData

marcoszorrilla 20-07-2008 21:42:18

Código Delphi [-]
procedure TfrmNeedData.FormCreate(Sender: TObject);
var
  i: integer;
begin
  SomeList := TStringlist.Create;

  for i := 0 to 500 do
    SomeList.Add('Line ' + IntToStr(i));
end;

procedure TfrmNeedData.QuickRep1BeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
begin
  // You must reset your data in the BeforePrint event
  // or when you print from the preview, the report will
  // start with the last value(s)
  CurrentIndex := 0;
end;

procedure TfrmNeedData.QuickRep1NeedData(Sender: TObject;
  var MoreData: Boolean);
begin
  // If MoreData is true, then QuickReport will print
  // another detail band.  When you set it to false,
  // the report is done.  

  MoreData := (CurrentIndex < SomeList.Count);

  if MoreData then
  begin
    QRLabel1.Caption := SomeList[CurrentIndex];

    // Here's how to set the progress bar
    QuickRep1.QRPrinter.Progress := (Longint(CurrentIndex) * 100) div SomeList.Count;
  end
  else
    QuickRep1.QRPrinter.Progress := 100;

  Inc(CurrentIndex);
end;

Este ejemplo lo trae el propio QuickReport en la carpeta Demos de Delphi.

Un Saludo.

joanajj 20-07-2008 22:24:56

muchas gracias
 
gracias por vuestra respuestas...

he encontrado un par de soluciones más que me pueden ayudar son:

usar un qrstringlist o una tabla virtual... con esto también me vale.


muchas gracias...


La franja horaria es GMT +2. Ahora son las 10:00:05.

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