2

アプリケーション内でQuickReportsを使用しており、フッター内に「Pagexofx」を含めたいと考えています。これを行うための最良の方法は何ですか?

4

3 に答える 3

9
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 は、TQuickRep コンポーネントを保持する Form2 で宣言されています。

public
    { Public declarations }
    FTotalPages: Integer;

Prepare の後、PreviewModal (または .Print) の前に QRPrinter オブジェクトを解放する必要があることに注意してください。そうしないと、メモリ リークが発生します。

Form2 の Quickreport1 に QRLabel を配置し、その onPrint イベント ハンドラーを実装します。

procedure TForm2.QRLabel1Print(sender: TObject; var Value: string);
begin
  Value := 'Page: ' + IntToStr(QuickRep1.QRPrinter.PageNumber) + ' of ' + IntToStr(FTotalPages);
end;
于 2012-06-07T08:07:47.517 に答える
0

最初にドキュメントを準備して、システム自体が生成するページ数を認識します。使用できるシステム変数があります (正確な名前を知るための 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;
于 2010-09-03T06:01:24.443 に答える
0

解決策は、プレビュー中にページ数を数えて、プリンターに送信するときにフッターに配置できるようにすることです。

于 2010-09-01T16:40:16.833 に答える