2009年9月8日火曜日

帳票(プロシージャ)にてアトリビュートの内容を改行印刷する方法










アトリビュートが長い文字列型の場合、プロシージャのレイアウトにアトリビュートを貼り付けるだけでは、改行がされません。

改行するためには、以下の手順が必要となります。



1.レイアウト


アトリビュートの代わりに変数を貼り付けます。


printblock.PNG

2.ソース


ソースではGXMLines関数で、折り返したい文字数での行数を取得し、GXGetMLi関数で各行を取得し、文字列を変数にセットし、行単位でPrintコマンドを発行します。





&nlin = GXMLines(LongSizeAttribute, 60)
  if &nlin > 0
   &i = 1
   Do While &i <= &nlin
    &Text = GXGetMLi(LongSizeAttribute, &i, 60)
    Print PB_Report1
    &i += 1
   enddo
  else
   &Text=''
   Print PB_Report1
  endif



2 件のコメント:

  1. この、マルチバイトを含む文字列にサンプルのように試したところ、GXMLinesと
    GXGetMLiで判断している位置が違う感じでした。
    これらの関数ってマルチバイト文字に対応してますでしょうか??

    返信削除
  2. マルチバイトには対応しています。関数として対応しているというよりも、内部的にはJavaなり.netなりの各言語環境で文字数で切り出しているだけですので、各言語で対応されていれば関数としても対応している。という事になります。

    返信削除