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 05-01-2005
fmonte fmonte is offline
Miembro
 
Registrado: ago 2004
Ubicación: Tandil
Posts: 67
Poder: 20
fmonte Va por buen camino
Qreport??

Hola gente tengo una duda, no se come obtener el total de paginas en un qrepor, yo logre el numero de pagina actual, q es con TQRSysData y poniendo en "Data" a qrsPageNumber, pero no se como obtener el total de paginas, porque quiero imprimir en el reporte, por ejemplo Pagina 1 de N, ese N es q quiero obtener, como hago???
Muchas gracias
Pancho
Responder Con Cita
  #2  
Antiguo 05-01-2005
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
Aquí tienes un ejemplo:

Código Delphi [-]
procedure TfrConVentas.SpeedButton4Click(Sender: TObject);
 var
 Bm:TbookMark;
 
 begin
 nOpcion:=0;
 nPages:=0;
 BM:=DmVil.Fact.GetBookMark;
 DmVil.Fact.DisableControls;
 
 DmVil.fact.Filter:='Numero ='+QuotedStr(DmVil.Factnumero.value);
 DmVil.fact.Filtered:=True;
 
   Application.CreateForm(TfrLptFactura,frLptFactura);
   frlptFactura.LptFactura.Prepare;
 
   nPages:=frlptFactura.LptFactura.QRPrinter.PageCount;
   noPcion:=0;
   frLptFactura.LptFactura.PreviewModal;
   frLptFactura.Close;
 
     DmVil.Fact.GotoBookmark(Bm);
     DmVil.Fact.EnableControls;
     DmVil.Fact.FreeBookMark(Bm);
 end;
 
 
 procedure TfrLptFactura.LptFacturaBeforePrint(Sender: TCustomQuickRep;
   var PrintReport: Boolean);
 begin
 
 lbPaginas.caption:='/ '+IntToStr(nPages);
 ...
Como verás es preciso hacer un Prepare antes para saber el número de páginas que va a tener el informe.

Muevo el tema al foro de impresión desde varios.

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 05-01-2005
fmonte fmonte is offline
Miembro
 
Registrado: ago 2004
Ubicación: Tandil
Posts: 67
Poder: 20
fmonte Va por buen camino
Código Delphi [-]
 procedure
Código Delphi [-]
 TfrConVentas.SpeedButton4Click(Sender: TObject);
  var
  Bm:TbookMark;
  
  begin
  nOpcion:=0;
  nPages:=0;
  BM:=DmVil.Fact.GetBookMark;
  DmVil.Fact.DisableControls;
  
  DmVil.fact.Filter:='Numero ='+QuotedStr(DmVil.Factnumero.value);
  DmVil.fact.Filtered:=True;
  
    Application.CreateForm(TfrLptFactura,frLptFactura);
    frlptFactura.LptFactura.Prepare;
  
    nPages:=frlptFactura.LptFactura.QRPrinter.PageCount;
    noPcion:=0;
    frLptFactura.LptFactura.PreviewModal;
    frLptFactura.Close;
  
      DmVil.Fact.GotoBookmark(Bm);
      DmVil.Fact.EnableControls;
      DmVil.Fact.FreeBookMark(Bm);
  end;
  
  
  procedure TfrLptFactura.LptFacturaBeforePrint(Sender: TCustomQuickRep;
    var PrintReport: Boolean);
  begin
  
  lbPaginas.caption:='/ '+IntToStr(nPages);
Hola no entiendo el codigo, primero no se que es el componente "DmVil" y me parece que tiene q ser mas sensillo, mira yo me base en los ejemplos que viene con delphi 6 y creo q la cantidad de Paginas es "Qrep1.QRPrinter.PageCount", pero no se yo lo segui y no se en donde ponerlo a este codigo, porque al principio es 1 y en algun momento se vuelve el total y ahi en donde yo puse el codigo para que muestre pero no me lo cambia. Te paso algo de codigo:
Código Delphi [-]
 ////////////////////////////////////////////////////////////////////////////////////
 //En este formulario tengo el TQuictReport//
 procedure TProdVend.QRep1Preview(Sender: TObject);
 begin
   with Form3 do
   begin
     QRPrev.QRPrinter := TQRPrinter(Sender); //Mostrar el texto correspondiente
     sePage.Value := QRPrev.QRPrinter.PageNumber; //Inicializar valores
     QRPrev.PageNumber:=sePage.Value;
     sePage.Value := 1;
     sePage.MinValue := 1;
     sePage.MaxValue := QRPrev.QRPrinter.PageCount;
     QRPrev.Zoom := 100;
     ZoomTo100.Down := True;
     spZoom.Value := 100;
     form3.Caption:= 'MOVIMIENTOS DIARIOS';
     form3.StBar.Panels[2].Text := 'Nombre : ' + 'MOVIMIENTOS DIARIOS';
     Show;
     Qrep1.QRPrinter.PageCount;
   end;
 end;
 ////////////////////////////////////////////////////////////////////////////////
 //En este formulario tengo el TQRPreview//
 procedure TForm3.QRPrevPageAvailable(Sender: TObject; PageNum: Integer);
 begin
   sePage.MaxValue := PageNum; //Ajustar el contador y la
   StBar.Panels[0].Text := 'Pag. 1/' + IntToStr(PageNum); //barra de tareas
   MaxPag := PageNum;
 end;
 ///////////////////////////////////////////////////////////////////
 procedure TForm3.sePageChange(Sender: TObject);
 begin
   QRPrev.PageNumber := sePage.Value;
   StBar.Panels[0].Text := 'Pag. ' + IntToStr(sePage.Value) + '/' + IntToStr(MaxPag);
 end;
 ////////////////////////////////////////////////////////
 procedure TForm3.sbFirstPageClick(Sender: TObject);
 begin
   sePage.Value := 1;
 end;
 //////////////////////////////////////////////////////////
 procedure TForm3.sbNextPageClick(Sender: TObject);
 begin
   if sePage.Value < QRPrev.QRPrinter.PageCount then
     sePage.Value := sePage.Value + 1;
 end;
 ///////////////////////////////////////////////////////////
 procedure TForm3.sbPreviousPageClick(Sender: TObject);
 begin
   if sePage.Value > 1 then
     sePage.Value := sePage.Value - 1;
 end;
 //////////////////////////////////////////////////////////////////////////
 procedure TForm3.sbLastPageClick(Sender: TObject);
 begin
   sePage.Value := QRPrev.QRPrinter.PageCount;
 end;
 //////////////////////////////////////////////////
 procedure TForm3.PrintSetupClick(Sender: TObject);
 begin
   with ProdVend.QRep1 do
   begin
     tag := -1;
     PrinterSetup;
     if tag = 0 then
       print;
   end;
 end;
 ////////////////////////////////////////////////////////////////////
 procedure TForm3.PrintClick(Sender: TObject);
 begin
   QRPrev.qrprinter.Print;
 end;
 ///////////////////////////////////////////////////////////////

Última edición por marcoszorrilla fecha: 05-01-2005 a las 21:50:46.
Responder Con Cita
  #4  
Antiguo 05-01-2005
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
Pues DmVil es la referencia al DataModulo en donde se hallan las tablas, te he pegado todo el código de la llamada, aunque lo único que interesa es como se hace el prepare como se guarda el número de páginas en una variable y como se muestra luego en QuickReport.

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
  #5  
Antiguo 16-10-2010
Avatar de darkerbyte
darkerbyte darkerbyte is offline
Miembro
 
Registrado: feb 2005
Posts: 196
Poder: 20
darkerbyte Va por buen camino
Thumbs down Doble proceso

Hola.

Yo tambien estoy viendo como obtener el numero de paginas del reporte. Sin embargo la solución aqui presentada tiene una deficiencia. Primero tienes que llamar al procedimiento prepare() para luego obtener el numero de paginas.
Eso no es el problema el punto es q al hacer el previewmodal() Quick report automaticamente prepara el informe antes de presentar la previsualizacion. Por lo que tenemos un proceso repetido en la preparación del informe. En un reporte de muchas paginas afecta
Responder Con Cita
  #6  
Antiguo 25-10-2010
rfernandez rfernandez is offline
Miembro
 
Registrado: ago 2003
Posts: 64
Poder: 21
rfernandez Va por buen camino
Llevo muchos años con Quickreport, desde delphi 3.0, y os diré que, si no estoy equivocado, la única manera de conseguir el número de pàginas es haciendo el .Prepare tal y como antes os han comentado.

Es una de las deficiencias que tiene QuickReport vs otras herramientas de impresión.

Saludos,
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


La franja horaria es GMT +2. Ahora son las 15:03:26.


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