標準の汎用ハンドラーにさらに機能を追加する
このサンプルで使用されているRAMP-TSセッションには、以下のように特別なフィールド受け渡しテーブルがあります。
この意味がわからない場合は、特別なフィールド受け渡しのチュートリアルを終了する必要があります。
特別なフィールド受け渡しテーブルを使用すると、サンプル画面でこれらのフィールドの自動プロンプトが有効になります。
これは、[入社日付]フィールドにカーソルを置き、F4を押した場合の画面です。特別なフィールド・ハンドラーDF_PRM07によりカレンダーが表示され、ユーザーは日付を選択することができます。
これは、プロンプト可能なフィールド内にカーソルを置いてF4ファンクション・キーを使用した場合にのみ実行できます。
F4プロンプト・ロジックは、HTMLAPIを経由して、また汎用的なSHARED.ApplyStandardLayoutファンクションを使用して汎用的に拡張することができます。
まず、SHARED.ApplyStandardLayoutを以下のように変更してオプションのパラメータを取得します。
ApplyStandardLayout :function(aPromptFields)
次に、以下のようなコードをApplyStandardLayoutに追加します。
/* Insert prompting images */
if (aPromptFields != null)
{
for (i = 0; i < aPromptFields.length; i++)
{
oH = HTMLAPI.getElementbyName(aPromptFields[i]);
if (oH != null)
{
oI = HTMLAPI.insertImage(oH,"/ts/skins/images/zoom_in_18x18.gif",this.HandlePromptImageClick,12,12,2,3);
oI.PromptFieldName = aPromptFields[i];
}
}
}
aPromptFields == nullを確認することで、設計でパラメータを省略可能にすることができます。呼び出し側はこれを渡す必要はありません。
SHAREDオブジェクトには、作成したイメージのクリックを処理するために以下の例のようにファンクションを追加する必要もあります。
/* ------------------------------------------------- */
/* Handle clicking on a prompt image */
/* ------------------------------------------------- */
HandlePromptImageClick : function(oE)
{
var oI = oE.srcElement;
if (typeof(oI.PromptFieldName) != "undefined")
{
SETCURSORTOFIELD(oI.PromptFieldName);
EXECUTE_BUTTON_SCRIPT(KeyF4);
}
},
最後に、SHARED.ApplyStandardLayoutを使用しているサンプル5250 Destination画面を変更し、プロンプト可能なフィールドの配列を渡す必要があります。
まず、スクリプト・コードの先頭で以下のように配列を宣言します。
aPromptFields :Array("DEPTMENT","SECTION","DATE_START_DDMMYY","DATE_END_DDMMYY"),
SHARED.ApplyStandardLayoutの呼び出しを変更します。
SHARED.ApplyStandardLayout(this.aPromptFields);
結果の5250画面は、以下のように表示されます。
プロンプト可能なフィールドの横に小さなイメージが表示されていることに注意してください。
ユーザーはイメージをクリックしてフィールドをプロンプトするか、フィールドにカーソルを置いてF4を押すことができます。結果は同じです。
イメージをクリックすると、実際は現在の画面のvHandle_BUTTONCLICKファンクションを呼び出しています。このため、このファンクションはF4キーを処理できる必要があります。