8.5.2 入出力テキストの表示
ここでは,APで入出力テキストを表示する場合のコーディング例について説明します。
入出力テキストでは,画面に入力されたデータをAPで受け取ったり,APで文字,文字色などを指定したりできます。出力テキストと同様に特定のデータだけを変更できます。
テキストの表示については,「8.5.1 出力テキストの表示」を,データ有無コードについては,「16. 論理マップ生成規則とマッピング規則」を参照してください。
ドローで入出力テキストボックスのダイアログの「動的変更(APから表示属性を変更する)」を選択すると,動的変更を利用して,文字色,背景色,表示方法,遷移条件など,入出力テキストの属性をAPで変更できます。APで指定しない場合,入出力テキストボックスのダイアログで指定した属性で表示されます。
AP実行時に,データ有無コードを使用して特定のデータだけを変更する場合の入出力テキストの表示例を次の図に示します。
画面に入力されたデータをAPでチェックして,再び画面に表示します。画面に表示するときには,品名コードと数量はデータを変更しないで表示するので,データ有無コードを使用します。値引のデータだけは,データを変更して赤色で表示します。
定義した論理マップと動的変更テーブルをJava言語用ツールで変換すると,入力データ用XML文書,出力データ用XML文書,および動的変更用XML文書が生成されます。XML文書に文字配列と表示色を設定するAPのコーディング例を次に示します。
- XML文書に文字配列と表示色を設定するAPのコーディング例
-
1. 通常の表示をする
表示属性は画面定義の標準属性を適用します。
ComTbl comTbl; ModTbl modTbl; LogicalMap logicalMapO; : //通信制御用クラスのインスタンスをcomTblに代入する : //動的変更用クラスのインスタンスをmodTblに代入する : //出力データ用クラスのインスタンスをlogicalMapOに代入する //マッピングモードを設定する comTbl.setDataInteger("XMAP_MAPOPT1", 0); comTbl.setDataInteger("XMAP_MAPOPT2", 0); //nodataには0番目の値がデータ有無コードであるような長さ1のバイト配列が代入される byte[] nodata = modTbl.getDataByteArray("XMAP_NODATA"); logicalMapO.setDataByteArray("MAP001_FIELD0001_A", nodata); logicalMapO.setDataString("MAP001_FIELD0001_O", "K3212345");
2. 文字色を赤に変更して表示する
修飾名「ER」は標準の変更属性を使用します。この赤色をほかの色にするためには,あらかじめドローセットアップでの設定が必要です。
ComTbl comTbl; ModTbl modTbl; LogicalMap logicalMapO; : //通信制御用クラスのインスタンスをcomTblに代入する : //動的変更用クラスのインスタンスをmodTblに代入する : //出力データ用クラスのインスタンスをlogicalMapOに代入する //マッピングモードを設定する comTbl.setDataInteger("XMAP_MAPOPT1", 3); comTbl.setDataInteger("XMAP_MAPOPT2", 15); //nodataには0番目の値がデータ有無コードであるような長さ1のバイト配列が代入される byte[] nodata = modTbl.getDataByteArray("XMAP_NODATA"); //表示データを変更しない指示 byte[] inAttr1 = modTbl.getDataByteArray("xmap_in_attr1"); logicalMapO.setDataByteArray("MAP001_FIELD0001_A", inAttr1);
- 注
-
マッピングモードが「論理マップだけ」,表示形態が「一部上書」の場合,画面を表示するときに,データ有無コードや定義されていない修飾名を制御項目に代入しても,入出力テキストボックスに定義した属性には戻りません。入出力テキストボックスに定義した属性に戻したい場合は,ドローセットアップですべての属性を「変更なし」に設定した修飾名を設定し,制御項目名に代入してください。