Page# numbering

Hi to everyone

I have written a simple Onbefore event with code like

procedure PagememoOnBeforePrint(Sender: TfrxComponent);
begin
if GETLANGUAGE=0 then // a user defined function
Pagememo.text:=format('Σελίς %d από %d',[<Page#>,<TotalPages#>]) // Greek transalation
else
Pagememo.text:=format('Page %d of %d',[<Page#>,<TotalPages#>]) // English translation

end;

when the report is loaded the pagemo prints Page 1 of 0 or Σελίς 1 από 0

when no event assigned like Page [Page#] of [TotalPages#] on the page footer band,
prints Page 1 of 1 (exactly the total pages number)

Thanks Vagelis

Comments

  • edited 9:00PM
    When you want to do page numbering using the event/scripts, you need to set the Report.EngineOptions.DoublePass to true (it can be done by selecting the report in the report tree and by using the object inspector to change the properties.

    When DoublePass is set, the report will be printed twice... so you need to be careful about what you do in the code.

    This is the code that I use to do the page count. I put it on the page header :
    var
      InitDone: Boolean;
    
    procedure PageHeaderOnBeforePrint(Sender: TfrxComponent);
    begin
      if not InitDone then begin
        Report.Variables['CurrentPage'] := 0;
        Report.Variables['TotalPage'] := 0;        
      
        InitDone := True;                                  
      end;
    
      Report.Variables['CurrentPage'] := Report.Variables['CurrentPage'] + 1;
      if not Engine.FinalPass then begin                      
        Report.Variables['TotalPage'] := Report.Variables['TotalPage'] + 1;
      end;
    
      if <CurrentPage> > <TotalPage> then begin
        Report.Variables['CurrentPage'] := 1;                    
      end;
    
  • edited 9:00PM
    I forgot to clarify that the code above will always work (even in batch printing). Since in your example you are not printing in a batch, you could simply assign the text 'Page [Page#] of [TotalPages#]' to the MemoView in the start of the report. It should be working.
  • edited 9:00PM
    PatF wrote: »
    I forgot to clarify that the code above will always work (even in batch printing). Since in your example you are not printing in a batch, you could simply assign the text 'Page [Page#] of [TotalPages#]' to the MemoView in the start of the report. It should be working.
    Its seems working after declaring two pass report=true
    Thank you for your information


    * I have remark that a vertical line with property baRight on band its not working after installation of the last version (top is remaing 0.50 and not 0)
    Can you reproduce this

    Thanks Vagelis Bekyros

Leave a Comment