可変フォーム印刷の概要

出力するデータによって帳票のレイアウトが変わる場合は、可変フォームを作成し、データに合った帳票を作成します。
 
1.可変フォームの作成
 
まず、レポートエディタを使って可変フォームを作成します。
可変フォームでは、帳票のフォームを用途ごとに分割し、それぞれを別のセクションとして作成します。
 
レポートエディタで可変フォームを作る
 
<例>見積書の可変フォーム
 

 
2.可変フォームの印刷
 
可変フォームを使った帳票を印刷するには、専用のアプリケーションが必要です。
アプリケーションは、レポートライブラリを使って開発します。 可変フォームはレポートエディタから印刷できません。
 
アプリケーションは、用紙の先頭から、セクションを一つずつ描画するようにプログラミングします。
セクションを描画する順番は自由に決めることができます。
見積書例の「明細セクション」のように、同じレイアウトでデータを繰り返し印刷する場合は、同じセクションを繰り返し使います。
 

 
用紙の下までセクションを描画したら、ページの最後に配置するセクションを描画して改ページします。
新しいページになったら、ページの先頭に配置するセクションを描画し、印刷を続けます。
 

 
改ページはプログラムの中で制御します。
用紙が残り少なくなったら、次に出力するセクションが残りの描画領域内に入るかどうかを判定します。
描画領域内に入らない時は、入るサイズのセクションに変更するか、または改ページをします。
このようにして、最後のページまでセクションを描画していきます。
 
3.可変フォーム印刷用の機能
 
可変フォーム印刷では、セクションの描画順やセクションの描画可否判定などのセクション管理をアプリケーション側で行います。
 
そこで、レポートライブラリには、そのための機能が用意されています。
 
○セクションを指定する
 

レポートライブラリOCX/レポートライブラリ.NETコントロール

SectionKeyプロパティ

レポートライブラリDLL/レポートライブラリJNI

jvSetSectionファンクション

 
○セクションを描画する
 

レポートライブラリOCX/レポートライブラリ.NETコントロール

DrawSectionメソッド

レポートライブラリDLL/レポートライブラリJNI

jvDrawSectionファンクション

 
○セクションの高さを取得する
 

レポートライブラリOCX/レポートライブラリ.NETコントロール

SectionHeightプロパティ

レポートライブラリDLL/レポートライブラリJNI

jvGetLongファンクション(JV_SECTION_HEIGHT)

 
○描画領域を取得する  
 

レポートライブラリOCX/レポートライブラリ.NETコントロール

DrawHeightプロパティ、DrawWidthプロパティ

レポートライブラリDLL/レポートライブラリJNI

jvGetLongファンクション(JV_DRAW_HEIGHT/JV_DRAW_WIDTH)

  
○現在の描画位置を取得する
 

レポートライブラリOCX/レポートライブラリ.NETコントロール

CurrentTopプロパティ

レポートライブラリDLL/レポートライブラリJNI

jvGetLongファンクション(JV_CURRENT_TOP)

 
 
 
実際のプログラム例