#730 印刷時拡張で他のコントロールの高さを合わせるには? レポート

下図のように複数のコントロールが横並びになっているレポートがあるとします。各テキストボックスには「境界線スタイル」プロパティ=”実線”、「印刷時拡張」プロパティ=”はい” が設定されています。


これをプレビューしてみると、各テキストボックスに出力される文字数にもよりますが、印刷時拡張の効果で所定のデザイン上の高さを超える場合は自動的に高くなり、すべての文字が出力されます。


このとき、すべてのテキストボックスの文字数が少ないレコードでは問題ないのですが、そうでない場合、文字数の多いテキストボックスだけが高くなり、文字数の少ないテキストボックスとの間に段差が出来て見苦しい感じになってしまいます。

そのようなケースも考慮すると、最大文字数に合わせてあらかじめデザイン上でコントロールを高くしておいたり、「境界線スタイル」プロパティを”透明”としてレイアウトしたりするのが理想的ですが、デザインとして枠線をどうしても付けたいということもあるかもしれません。またVBAのプログラムで行ごとにコントロールの高さを変えるなどの方法もありますが、レポートのフォーマット時のイベントでは印刷時の自動拡張が行われたかどうか判別できないという問題もあります。

そこで、Accessの「レイアウト」機能を使って、印刷時拡張が行われた場合に他のコントロールも連動して高くする方法を説明します。

※ウィザード等を使ってフォームやレポートを作成すると初めから”レイアウト”が適用されていると思いますが、ここではそうでないレポートデザインを前提として手順を説明します。

  1. まず、詳細セクションに配置されているすべてのコントロールを選択された状態にします。


  2. リボンの[配置]タブにある[表形式]ボタンをクリックし、”表形式レイアウト”を選択コントロールに適用します。




  3. レイアウト内のすべてのコントロールについて、”レイアウトに関する下記のプロパティ”を適宜設定します。レイアウト適用直後はコントロールサイズや位置などの要素も勝手に変わってしまいますので、再調整します。
    • 「枠線のスタイル」プロパティ
    • 「枠線の色」プロパティ
    • 「枠線の幅」プロパティ
    • 「(上下左右)スペース」プロパティ

    ※各コントロールの「境界線スタイル」や「境界線色」なども反映されますので、それらが必要でなければ「境界線スタイル」プロパティ=”透明”とした方がよいかもしれません。


  4. ここまでのデザインが出来たらレポートをプレビューして確認してみます。下図のように、同じ行内に1つでも印刷時拡張されたテキストボックスがあると他のテキストボックスも連動して同じ高さになっていることが確認できます。
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved