静的コンボボックス

見出しのアイコン

プルダウン・メニューのように候補をプルダウンできるコンボボックスは代表的な GUIコントロールの
ひとつですが、DDS記述にはその機能はありません。
良く似た機能として DDS の VALUESキーワードがありますが、AutoWebでは VALUESキーワードと
TEXTキーワードを組み合わせることによって静的コンボボックスを形成することができます。

担当者コードの静的コンボボックス

A                                  8  2' 担当者 '
A            JUTANT         4A  B  8 12VALUES('0001' '0002' '0003')
A                                      TEXT('" 中村 " " 田中 " "鈴木"')

静的コンボボックスへの構成

VALUESキーワードに加えて、TEXTキーワードを対応する項目を
"(テキスト)" .... の形式で定義してください。
これによって AutoWeb にはコンボボックスの定義であると解釈されて次のように表示されます。

担当者コードの静的コンボボックスの HTML表示

TEXTキー・ワードの50バイトまでの制限の注意

DDS TEXTキー・ワードに入れられる文字列は 最大50バイトまでという制限があります。
しかし CRTDSPF コマンドでは TEXTキー・ワードが
50バイトをオーバーしたとしてもエラーにはなりません。
50バイト以降の文字列が切除されて DSPF に登録されます。
このため 50バイトを超えて記述すると
コンボボックスの後続の候補が表示されなくなってしまいます。
詳細は IBM DDS解説書をご参照ください。

【例】
  ID         重大度    メッセージ
* CPD5262    10       テキストに 50 桁を超える文字が入っています。

50バイトを超える候補の文字列の定義の方法

コンボボックスの簡単な候補であれば 50文字以内に収まりますが
候補の記述が 50文字を超える場合でも、次の方法によって 50文字超の候補を定義することができます。

  • TEXTキー・ワードを TEXT('*COMBO') としてコンボボックスであることを宣言したから
    同じ(行, 桁)の位置に HTMLキー・ワードを使って次のように候補を定義する。
【例】 サンプル・ソース: PGM101FM
  A            TKKBN          1A  B  3 30
  A                                      VALUES('1' '2' '3' '4' '5' '9')
  A                                      TEXT('*COMBO')
  A                                  3 30HTML('" 設備 " +
  A                                      " ユニット " +
  A                                      " 部品 " +
  A                                      " 素材 " +
  A                                      " 木型 " +
  A                                      " その他 "')

解説

元のフィールド TKKBN のテキストを TEXT('*COMBO') として宣言して
同じ (3, 30) の位置に HTMLキー・ワードを使って候補の文字列を宣言しています。

コンボボックスの自動 SUBMIT

コンボボックスで候補の選択を行うと自動的に SUBMIT 投入させることができます。
例えば表示する国際言語をコンボボックスの中から選ぶだけで
OK ボタンを押したのと同じ仕組みに作ることができます。

静的コンボボックスを示すテキストの中に文字列「*SBM」を入れておくと
自動 SUBMIT するコンボボックスが生成されます。

【例】言語を選択すると自動 SUBMIT されるコンボボックス
  A*                                 5 60' 言語 '
  A            LANG_          6A  O  5 60MSGID(MSG0013 *LIBL/USRMSG)
  A            LANG           3A  B  5 67
  A                                      VALUES('JPN' 'CHN')
  A                                      TEXT('" 日本語 " " 中国語 " *SBM')
【解説】

フィールド: LANG はコンボボックスですが *SBM が指定されているため

<select id='B0567' name=B0567 field='LANG'  OnChange="ON_KEYDWN('ENTER');">
     <option value="JPN" selected> 日本語 </option>
     <option value="CHN"> 中国語 </option>
</select>

のようなコンボボックスが生成されます。

 OnChange="ON_KEYDWN('ENTER');"

とは このコンボボックスで選択があると ON_KEYDWN('ENTER') という
JavaScript 関数が実行されます。
これは ENTER キー (実行キー) が押されたのと同じことになります。

SFL レコード上の静的コンボボックス

SFL レコード上にも静的コンボボックスを定義することができます。
記述の方法は VALUES + TEXT による通常の静的コンボボックスです。

【例】
   A            TKKBN          1A  B  6 47VALUES('1' '2' '3')
   A                                      TEXT('" 得意先 ", " 請求先 " " 納 -
   A                                       入先 "')