初めまして。
WindowsXP、Delphi5で開発しています。
QuickReportで帳票を作成しているのですが、総ページ数がうまく取得出来ず悩んでおります。
改ページ条件を設定している帳票で、Aグループ3枚、Bグループ2枚、Cグループ5枚の印刷結果があるとすると、
QuickRep.Prepare;
QuickRep.PageNumber;
でグループを無視した総トータル数(上記の例だと10枚)は取得出来ますが、
各グループ毎の総ページ数を取得することは出来ないでしょうか?
宜しくお願い致します。
印刷後に取得するならば、変数を用意して、ページ印刷後にインクリメント、グループがブレークしたらリフレッシュすればいいと思います。
が、取得したグループ枚数を、初心者さんは、どうしたいのでしょうか。
どの時点でほしいのか。印刷をしたいのか。ShowMessageで表示できればいいのかいかがでしょうか。
ご返信遅くなりまして、申し訳御座いません。
印刷時に各グループ毎に「印刷ページ/取得したグループ枚数」として印刷(プレビュー)を行いたいと考えております。
従いまして、印刷前または印刷中にグループ枚数を取得出来たらありがたいです。
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) 時は、
取得したグループ毎の総ページ数を出力します。
今日も雪様、おかぽん様、ご返信ありがとうございます。
QuickRep.Prepareの基本動作がわかっていなかったため、悩んでおりましたが、印刷プレビュー画面が出ないだけで QuickRep.Preview を
実行しているのとほぼ同じであれば、配列で確保しておくことが出来そうです。
あとはロジックだけの問題ですので、本件は解決とさせて頂きます。
ありがとうございました。
ツイート | ![]() |