Solved

Delphi Rave Reports How do you link the CurrentPage and Pages Properties to TRVSystem Component

Posted on 2010-09-01
9
2,242 Views
Last Modified: 2013-11-23
Using Code Based Rave Reports in Delphi, how do I display the CurrentPage Number and Total Pages in a report? I have a TRVSystem component but the CurrentPage and Pages property is linked to the TRvRenderPreview component.
0
Comment
Question by:HenryM2
  • 4
  • 4
9 Comments
 
LVL 13

Expert Comment

by:aflarin
ID: 33578407
Well, the current page you can show easy:

  procedure PrintGridHeader;
  ....
    with Sender as TBaseReport do
    begin
      if CurrentPage <> 1 then // don't show page number on the first page (just for example)
        PrintCenter(IntToStr(CurrentPage), PageWidth/2);
0
 

Author Comment

by:HenryM2
ID: 33578721

I am using this line:

PrintCenter('Page ' + IntToStr(CurrentPage) + ' Of ' + IntToStr(Pages), PageWidth/2);

The compiler is happy with (CurrentPage) works but it reports  (Pages) is reported as Undeclared Identifier..


0
 
LVL 13

Expert Comment

by:aflarin
ID: 33578943
the problem is how to know amount of pages if is still printing

it seems you have to generate first, save page count into variable and then generate it again. Here is example:

procedure TForm1.Button1Click(Sender: TObject);
begin
  RvSystem1.Generate; // generates only for getting page count
  RvSystem1.Execute; // the second for preview
end;

var
  Pages: Integer;

procedure TForm1.RvSystem1AfterPrint(Sender: TObject);
begin
  Pages:= (Sender as TBaseReport).CurrentPage;
end;


procedure TForm1.RvSystem1Print(Sender: TObject);

  procedure PrintGridHeader;
  var
    iCol: Integer;
    curY: Double;
  begin
    with Sender as TBaseReport do
    begin
      if CurrentPage <> 1 then
        PrintCenter(IntToStr(CurrentPage) + IntToStr(Pages), PageWidth/2);
   ......

0
Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

 

Author Comment

by:HenryM2
ID: 33579077
Yes, this is one way.  The other way I thaught about  to get the number of pages would be to take the number of rows in the StringGrid and Div it by 50 (50 lines per page) + 1.

The idea of pages, however came form the Rave Report manual.  Below, a screen print from the manual.  Is this not an option?


Rave-Report-Pages-Property.png
0
 
LVL 13

Accepted Solution

by:
aflarin earned 500 total points
ID: 33579173
>> and Div it by 50 (50 lines per page) + 1.

It's a good idea. But you should add 1 only if count of lines > 50, 100, 150 etc
Like this:

Pages:= (StringGrid1.RowCount div 50);
if (StringGrid1.RowCount mod 50) > 0 then
  Inc(Pages);

>> Is this not an option?

I guess no, it only for showing in your controls as report status, but the report was already generated and you can't print the count of pages


0
 

Author Closing Comment

by:HenryM2
ID: 33579370
Thanks
0
 
LVL 25

Expert Comment

by:epasquier
ID: 33586326
> Pages:= (StringGrid1.RowCount div 50);
> if (StringGrid1.RowCount mod 50) > 0 then Inc(Pages);

This kind of thing is generally done in one single step :

Pages:= ( Count + NbPerPage -1 ) Div NbPerPage;

in you case :
Pages:= (StringGrid1.RowCount+49) div 50;

Open in new window

0
 
LVL 13

Expert Comment

by:aflarin
ID: 33587341
Thanks Epasquier

I suspected that it can be done in one string, but was too tired to think

0
 

Author Comment

by:HenryM2
ID: 33587409
Thanks to both of you.  Well as they say, there is many ways to skin a cat, perhaps some a bit more elegant than others, but the main thing is that my program is working very well.
0

Featured Post

ScreenConnect 6.0 Free Trial

Check out the updates in one game-changing release, ScreenConnect 6.0, based on partner feedback. New features include a redesigned UI that improves session organization and overall user experience. See the enhancements for yourself!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
How to fill array with TArray.Create? 14 90
Strange behavior when a form is closed 6 57
select query - oracle 16 100
Delphi Yen format 3 35
Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question