PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
22825 | 06/10/24 12:26:44 | RE(2):PB9.0: コンポジット By bmt |
22798 | 06/09/28 10:53:38 | RE(1):PB9.0: コンポジット By 梶 |
22794 | 06/09/27 12:03:45 | PB9.0: コンポジット By bmt |
カテゴリ:データウィンドウ
日付:2006年09月28日 10:53 発信者:梶
題名:RE(1):PB9.0: コンポジット
bmtさん、こんにちは。
コンポジットでは、仰っているような現象は回避のしようがなさそうですね。
私が似たような帳票出力を行ったときは、ヘッダ有りDWとヘッダ無しDWとを作成し
非表示状態でウィンドウにデータウィンドウを貼り付けておき、それぞれの
データウィンドウのPrintPageイベントで、ヘッダ有りは1頁目以外は「return 1」
ヘッダ無しは1頁目のみ「return 1」するように記述しました。
後は、それぞれのデータウィンドウをShareし、片方にデータを入れておいて
PrintDataWindowメソッドで出力するようにしましたね。
データをセットするループの中で、途中で再度ヘッダを出力する必要のある
データが来たら、その都度PrintDataWindowメソッドで出力して、
その後、データウィンドウをReset。そのまま、後続のデータをセットして・・・
とこんな感じで、bmtさんの希望の出力が実現できると思います。
注意点としては、データウィンドウをShareしてしまうと、出力明細行数が
異なるので、そのままデータをセットするだけでは、行がずれてしまうので、
ダミー行を入れて調整する必要があります。
ちなみに、現在は明細行数を固定で20行と30行としているようですが、
帳票の用紙サイズや、余白設定で印字できる行数が変わるかもしれませんので、
印刷前にダミーで行を複数行挿入して、Describeメソッドで
「datawindow.LastRowOnPage」プロパティの値を取得すると、
1頁辺りの印刷可能行数を判断できますよ。
例)
//ヘッダー有・無のページ内行数を取得
dw_prn1.object.data[20,1] = \"\"
dw_prn2.object.data[20,1] = \"\"
dw_prn1.Modify(\"datawindow.print.Preview=~\"Yes~\"\")
dw_prn2.Modify(\"datawindow.print.Preview=~\"Yes~\"\")
ll_max[1] = long(dw_prn1.Describe(\"datawindow.LastRowOnPage\"))
ll_max[2] = long(dw_prn2.Describe(\"datawindow.LastRowOnPage\"))
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows XP
DBMS (記載なし)
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.