Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-12-2007
Torreblanca Torreblanca is offline
Miembro
 
Registrado: jul 2005
Ubicación: Veracruz México
Posts: 52
Poder: 19
Torreblanca Va por buen camino
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

De antemano les agradesco su apoyo

Saludos!!!
Responder Con Cita
  #2  
Antiguo 14-12-2007
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 19-12-2007
Torreblanca Torreblanca is offline
Miembro
 
Registrado: jul 2005
Ubicación: Veracruz México
Posts: 52
Poder: 19
Torreblanca Va por buen camino
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;
Responder Con Cita
Respuesta



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
creacion de una base de datos en tiempo de ejecucion lokodelphi SQL 3 24-04-2006 14:37:43
Creación de componentes en tiempo de ejecución jymy788 Varios 2 27-01-2005 17:22:20
Creación de tablas temporales en ADO en tiempo de ejecución Athalon Conexión con bases de datos 1 27-04-2004 13:20:20
Creación de tabla en tiempo de ejecución sledgehammer Conexión con bases de datos 3 16-09-2003 15:08:01
Creacion de componente en tiempo de ejecución cone220 OOP 1 16-09-2003 03:47:16


La franja horaria es GMT +2. Ahora son las 01:27:41.


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