現在、Delphi2007でQuickReportにて、グループヘッダーがあるレポートを作成しています。
グループヘッダーは1ページにいくつも表示するように
ForceNewPageプロパティをFalseにしています。
また、改ページした場合は、グループヘッダーを再表示させたいため、
ReprintOnNewPageプロパティをTrueにしています。
レポートを作成してテストしていたところ、
あるページの最終行にグループヘッダーが表示されて改ページされている
印字パターンを見つけました。
その場合、次ページの1行目にはいきなりディテールデータが印字されて
います。
これを回避する方法はあるのでしょうか?
ご存知の方がいらっしゃいましたらご教授ください。
よろしくお願いします。
バンドのAfterPrintで、ハンドの高さの累計を計算しておく。
頁の高さと印刷済みハンドの高さの累計から。グループヘッダー出力前に「まだ、グループヘッダーをこの頁に印刷してよいかどうか」を判定する。
で、どうだい。
金魚様、ありがとうございます。
以下のやり方で解決出来ました。
グループバンドのBeforePrint処理で、印字位置より、最終行に印字する予定の場合は、改ページを行う。
参考までにソースを以下に記します。
※qrMain:TQuiqRep
With qrMain do
begin
if CurrentY + Sender.Height >= Page.Length - Page.TopMargin - Page.BottomMargin then
NewPage;
end;
質問された、こいちさんが解決済みであり、しかも半年前の質問に対してで恐縮です。
これまで、こいちさんのような処理の解決に、金魚は回答のように「バンドのAfterPrintで、ハンドの高さの累計を計算しておく。」で処理してきました。
こいちさんのやり方の方がスマートだなと思い、改修の機会に書換えをしてみたところ思ったようにゆきませんでした。
CurrentYが 0.1mm単位に対して Sender.Heightがピクセル単位であることから変換(例えば Sender.Height * 2.67)が必要ではないでしょうか。
ツイート | ![]() |