hiroton
2022/01/20 (木) 13:37:21
3c477@f966d
縦線についてはきれいな表形式のレポートならレイアウト機能(レポートデザインツール→テーブル→表形式)を使って縦線の代わりにテキストボックスを使うと印刷時拡張で一緒にサイズが変わるのでちょっと楽かもしれません
最下部の横線考えてたらhatenaさんがいい感じの回答してますが、
Private Sub Report_Page()
BottomPos = BottomPos - PageTop '//変更
Me.DrawWidth = 4 '罫線の太さを設定
Me.Line (0, BottomPos)-(Me.Width, BottomPos)
End Sub
Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer)
PageTop = Me.Top '//これだけでいい
End Sub
Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)
BottomPos = Me.Top + Me.拡張設定のあるテキストボックス.Height '//追加
End Sub
単に印刷領域上からの位置でいいんじゃないかなぁというのと、Formatイベントは処理が複雑なので実際に描画したPrintイベントで位置を取得すると楽じゃないかなと
見る方向が逆になっているので+-が逆になるのと、印刷時拡張後の高さが欲しいので高さを取得するコントロールをきちんと指定する必要があります
グループヘッダー・フッターについても、ページの最後に印刷される可能性があるならPrintイベントで同様に最下部の位置を取得しておけばいいです
いずれにせよReport_Pageイベント直前のPrintイベントでBottomPosがその「セクションの印刷開始位置(Me.Top)+セクションの高さ」で上書きされていればちょうど最下部に線を描画できます
※大本のコード(その他の目的)部分は考慮していません
通報 ...