帳票原紙をすべてActiveReports化する
最後に、帳票原紙を背景にはめ込むこともやめて、罫線や帳票タイトルなどもすべてActiveReportsのコントロールで定義してみましょう。
すべてActiveReportsのコントロールで定義する場合も、元の帳票のフォーマットをできるだけ踏襲しましょう。ActiveReportsならば0.01cmくらいの指定でも再現性は高いので、帳票原紙のサイズを物差しで測って枠の大きさを求めるなり、先ほどのように別レイヤーでDesignerTransparentを0.8にして薄く表示しながらその上にコントロールを合わせるなりして作成(作成後はレイヤーごと削除)していきます。
ヘッダ部分については、TextBoxコントールでBorderStyleプロパティをSolidにして作成しています。それ以外についてはShapeコントロールを貼り付けた後にその中にBorderStyleプロパティがnoneのTextBoxコントロールを貼り付けています。
これでLayer1レイヤーに配置したコントロールは常にdefaultレイヤーの背面に表示することができます。ここに帳票原紙のイメージを配置しておきます。
なぜ、別レイヤーにしておくかといえば、Layer1のDesignerTransparentプロパティに「0.8」を設定してみるとわかります。デザイナ画面ではLayer1に配置した画像がうっすらと表示されるので帳票原紙に印字されている項目がどれなのかの区別が容易になります。
まとめ
今回試したようにExcel方眼紙のように本来のExcel的な使い方ではないシートでもActiveReportsで正しく読み取ることができました。また、データ印字範囲というExcelにはない概念を入れることで、帳票枠内での文字の折り返しなどもスムーズに設定ができました。
このようにActiveReports化することで帳票定義とデータ部分が分離できるので、データだけを使って2次加工や集計することもしやすくなります。
また、Excel方眼紙から自動生成した定義ではなく、ActiveReportsのコントロールを使った帳票定義をすることで、あとで帳票定義を変更する必要があったときも直しやすくなります。また、データもそのままではなく印字時加工も多彩なものがありますので、ノンプログラミングでも非常に柔軟に印字結果を制御できるのがお分かりいただけたのではないでしょうか。
印刷出力というのは、システム開発においても利用者が気にする部分ですので、痒いところに手が届くActiveReportsで細かな仕様を実現する道を確保しておくのが良いでしょう。