Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   QuickReport y creacion de paginas en tiempo de ejecución (https://www.clubdelphi.com/foros/showthread.php?t=51387)

Torreblanca 13-12-2007 22:06:23

QuickReport y creacion de paginas en tiempo de ejecución
 
Necesito hacer un reporte en quickReport tomando como fuente dos listbox normales sin conexión a bases de datos. En el formulario de QuickReport tengo un pageheader, un detail band y un pagefooter. Creo los QrLabels en tiempo de ejecución de la sig. manera

Código Delphi [-] procedure TFrmChofer.Button3Click(Sender: TObject);
var y : integer;
begin
conteo:=FrmChofer.ListBox1.Count;
tp:=45; // top del qrLabel dentro del detail band
for y:=1 to conteo do
begin lblNombre:=TQRLabel.Create(self); lblNombre.Parent:=FrmRepAbrevChofer.QRBand2; lblNombre.Top:=tp; lblNombre.Left:=10; lblNombre.Width:=50; lblNombre.Caption:=FrmChofer.ListBox2.Items[y-1]; lblNorm:=TQRLabel.Create(self); lblNorm.Parent:=FrmRepAbrevChofer.QRBand2; lblNorm.Top:=tp; lblNorm.Left:=210; lblNorm.Width:=100; lblNorm.Caption:=FrmChofer.ListBoxPromNorm.Items[y-1]; End;


Lo que he intentado y no me ha salido es imprimir 10 registros en cada pagina del Qreport, pero le he intentado con las propiedades del detail band como ForceNewPage y la propiedad del Qreport NewPage y ninguna me da resultados

algo asi intento


Código Delphi [-] if y > 10 then
begin
FrmRepAbrevChofer.QuickRep1.NewPage;
FrmRepAbrevChofer.QRBand2.ForceNewPage:=true;
end;

Alguien me puede dar una idea o alguna forma para resolver este dilema :confused:

De antemano les agradesco su apoyo

Saludos!!!

afxe 14-12-2007 09:42:33

Espero haber entendido.
 
No está muy claro tu problema, pero creo que te he entendido. Intenta esto:
Declaras dos variables privadas, una vIndice y otra vContador. En el evento BeforePrint del QuickReport pones vIndice a cero y en el eveto onStartPage incializas vContador a cero.

Usa el evento OnNeedData para incrementar vIndice e ir accediendo a los elementos del ListBox, poniendo MoreData a False cuando llegues al final de la lista.

En el evento AfterPrint de la banda de detalle incremetas vContador, y si vContador llega a 10 entonces llamas al método Newpage (QuickRep1.NewPage) .

Puedes tener creado los qrlabels en tiempo de diseño, y si quieres ocultar alguno para que no se imprima usa la propiedad enabled del qrlabel en el evento BeforePrint de la banda.

Saludos.

Torreblanca 19-12-2007 05:49:44

Gracias
 
Gracias afxe, no habia tenido tiempo para responder, probe la solución que me ofreciste, pero creo que hay algo mal en mi aplicación por que la logica es la correcta pero a la hora de implementarlo no mas no sale. Creo que he desistido de usar QuickReport para este reporte por lo menos, le encontre la solución usando comandos de Rave Reports. Te agradesco la atención para contestar a mi pregunta.

Saludos!!!

Adjunto el pedazo de código con el que resolví mi problema en Rave Reports para futuras consultas.

Código Delphi [-]
procedure TFrmChofer.RvSystem1Print(Sender: TObject);
var
y, x : integer;
begin
  with Sender as TBaseReport do
  begin
  x:=FrmChofer.ListBoxChofer.Count;
  y:=1;
  tp:=1.3;   //tp es el top de la hoja del reporte
    SetFont('Arial', 15);
    GotoXY(1,1);
    PrintCenter('Reporte de choferes',4);
    SetFont('Arial', 8);
for y:=1 to x do
  begin
     GotoXY(0.5,tp);
     Print(FrmTotalesChofer.ListBoxChofer.Items[y-1]); // Nombre chofer
     GotoXY(2,tp);
     Print(FrmTotalesChofer.ListBoxPromNorm.Items[y-1]); //Boletos     Normales
     Print(FrmTotalesChofer.ListBoxPromTotal.Items[y-1]); //Suma Ventas
     GotoXY(7,tp);
     tp:=tp+0.3;
      
      if tp >=12 then   //Empieza en una nueva pág. cuando llega a este punto
         begin
          NewPage;
          SetFont('Arial', 15);
          GotoXY(1,1);
          PrintCenter('Reporte abreviado de choferes',4);
          SetFont('Arial', 8);
          tp:=1.3;
         end;
   end;
     end;
end;


La franja horaria es GMT +2. Ahora son las 21:59:13.

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