Delphi Quick Reports - Всего страниц - PullRequest
       13

Delphi Quick Reports - Всего страниц

1 голос
/ 01 сентября 2010

Я использую QuickReports в своем приложении и хотел бы, чтобы в нижней части страницы была «Страница x из x». Какой лучший способ сделать это?

Ответы [ 3 ]

7 голосов
/ 07 июня 2012
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.QuickRep1.Prepare;
  Form2.QuickRep1.FTotalPages := Form2.QuickRep1.QRPRinter.PageCount;
  Form2.QuickRep1.QRPrinter.Free;
  Form2.QuickRep1.QuickRep1.QRPrinter := nil;
  Form2.QuickRep1.PreviewModal; // or .Print
end;

FTotalPages объявлен в Form2, которая содержит компонент TQuickRep.

public
    { Public declarations }
    FTotalPages: Integer;

Обратите внимание, что объект QRPrinter должен быть освобожден после Prepare и до PreviewModal (или .Print), иначе вы получите утечку памяти.

В Form2 на Quickreport1 поместите QRLabel и реализуйте его обработчик события onPrint

procedure TForm2.QRLabel1Print(sender: TObject; var Value: string);
begin
  Value := 'Page: ' + IntToStr(QuickRep1.QRPrinter.PageNumber) + ' of ' + IntToStr(FTotalPages);
end;
1 голос
/ 03 сентября 2010

Сначала подготовьте документ, чтобы сама система знала, сколько страниц будет создано. Существует системная переменная, которую вы можете использовать (без QR-кода, чтобы сообщить вам точное имя).

Например:

procedure TForm1.Click(Sender: TObject);
begin
  //this actually run the report in memory to 
  //calculate things like total page count
  Report1.Prepare;  
  Report1.Print;  //or PreviewModal;
end;
0 голосов
/ 01 сентября 2010

Решение заключается в подсчете количества страниц во время предварительного просмотра, поэтому при отправке его на принтер вы можете поместить его в нижний колонтитул.

...