top of page
  • 350

既に印刷された枠の中にテキストを収めたい

時々、下記のような予め印刷された用紙に位置を合わしてプリントしたい場合があります。

住所氏名等の位置合わせは簡単なんですが、困るのが口座番号や金額を四角の枠の中に収めないといけない場合です。ハガキの郵便番号もこのケースですね。

払込取扱票

等幅のフォントで上手いこと収める方法もありますが、環境によって変わる場合もありますので確実ではありません。(環境が固定できて上手くいくならそれはそれでOK)

計算式で一文字一文字バラバラに抽出してフィールドを分けるというアイデアもありますが、それだけに10も20もフィールドを増やしたくはないですね。

そこで、下記2つの機能を使うことで1つのフィールドで実現する方法を解説します

  1. 計算タイプのフィールド

  2. 繰り返し設定

繰り返し設定が1つにフィールドで実現するキモです。繰り返し設定は使うなという話を聞いたことがあるかもしれません。確かに、データの保存にはおすすめしませんが、このような見た目だけ(UI)には極めて有効な手段です。

先に、答えを書くと下記のようになります。

Middle ( Extend ( 口座番号 ) ; Get( 計算式繰り返し位置番号 ) ; 1 )

順番に説明していきます。

根本は

Middle ( 口座番号 ; 何文字目からか? ; 何文字か? )

となります。

例えば、「350002」という口座番号があって、2文字目の数字を出したい場合は

Middle ( 口座番号 ; 2 ; 1 )

となり、「2」が表示されます。

要は、何個目の文字を何文字出したいか?という話です。

文字数は必ず1文字なので、何文字目なのかだけを考えればいいのです。

それが Get( 計算式繰り返し位置番号 ) になります。

この関数は自分が繰り返し設定されたフィールドの何個目にいるかを返す関数なので、繰り返しの2個つ目の時は2を返すので口座番号の2文字目を出せるわけです。

次に謎のExtendという関数ですが、これは繰り返し設定されたフィールド内で普通のフィールを参照する時に使用します。これがないと、繰り返しの2個目の時は口座番号の2個目という何も無い所を取り行こうとして、空白を返してしまいます。口座番号[1]という書き方でもOKです。

繰り返し設定されたフィールド同士だと自動的にN個目同士を参照できるので、便利な場合もあります。

枠内に収める関数解説

この方法を使えば、簡単に1文字=1フィールドとなり、フィールドも1つで済みますね。

郵便番号の様に3文字+4文字でバラしたい場合も、レイアウトの繰り返し設定で1文字目〜3文字分、4文字目〜4文字分といった設定も出来ます。

インスペクタの繰り返し設定

そうすると、 下記のようなレイアウトを実現することが出来ます。

枠内に収める 完成

最後に1つ問題があります。

口座番号の場合は良かったのですが、数字の部分は右寄せなので困りますよね。

そういう場合は

Middle ( Right ( " " & Extend (金額) ; 8 ) ; Get(計算式繰り返し位置番号) ; 1 )

となります。

Rightの横に空白がありますが、これは本当に空白で金額の桁数分の空白を設定しています。左に空白を作っておいて文字数が必ず8文字になるようにしています。そうすることで、桁数が足りない時は余分に空白ごとRinght関数で切り取っています。

閲覧数:1,600回0件のコメント

最新記事

すべて表示
bottom of page