QuickReportで総ページ数を取得するには?

解決


初心者  2013-01-07 12:19:16  No: 43605

初めまして。
WindowsXP、Delphi5で開発しています。
QuickReportで帳票を作成しているのですが、総ページ数がうまく取得出来ず悩んでおります。

改ページ条件を設定している帳票で、Aグループ3枚、Bグループ2枚、Cグループ5枚の印刷結果があるとすると、
  QuickRep.Prepare;
  QuickRep.PageNumber;
でグループを無視した総トータル数(上記の例だと10枚)は取得出来ますが、
各グループ毎の総ページ数を取得することは出来ないでしょうか?
宜しくお願い致します。


今日も雪  2013-01-10 19:43:33  No: 43606

印刷後に取得するならば、変数を用意して、ページ印刷後にインクリメント、グループがブレークしたらリフレッシュすればいいと思います。
が、取得したグループ枚数を、初心者さんは、どうしたいのでしょうか。
どの時点でほしいのか。印刷をしたいのか。ShowMessageで表示できればいいのかいかがでしょうか。


初心者  2013-01-15 04:59:45  No: 43607

ご返信遅くなりまして、申し訳御座いません。

印刷時に各グループ毎に「印刷ページ/取得したグループ枚数」として印刷(プレビュー)を行いたいと考えております。

従いまして、印刷前または印刷中にグループ枚数を取得出来たらありがたいです。


おかぽん  2013-01-15 18:32:32  No: 43608

QuickReportは、グループ毎の枚数をカウントしていないので、「今日も雪」さんの説明にあるとおり、
> 変数を用意して、ページ印刷後にインクリメント、グループがブレークしたらリフレッシュ
するしかありません。

「取得したグループ枚数」が、それぞれのグループの通しページ番号のみであれば、
グループページ番号用のTQRLabelを貼り付け、グループページ番号用の変数を準備し
・TQuickRep.OnEndPage で、グループページ番号用の変数をインクリメント。
・グループページ番号用のTQRLabelのOnPrint において、以下でページ番号を印刷。
  Value := IntToStr(グループページ番号用の変数);
・グループフッターでグループページ番号用の変数を1 に戻す

グループ毎の総ページ数も同時に印刷が必要な場合、基本的にQuickRep.Prepareが必須になります。
QuickRep.Prepareの動作そのものは、印刷プレビュー画面が出ないだけで QuickRep.Preview を
実行しているのとほぼ同じです。
QuickRep.PrepareとQuickRep.Preview ( or Print) をフラグ等で判定し、Prepare時のみ
グループフッターでグループ毎のページ数を取得するようにし、Preview( or Print) 時は、
取得したグループ毎の総ページ数を出力します。


初心者  2013-01-16 20:53:09  No: 43609

今日も雪様、おかぽん様、ご返信ありがとうございます。

QuickRep.Prepareの基本動作がわかっていなかったため、悩んでおりましたが、印刷プレビュー画面が出ないだけで QuickRep.Preview を
実行しているのとほぼ同じであれば、配列で確保しておくことが出来そうです。

あとはロジックだけの問題ですので、本件は解決とさせて頂きます。

ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加