複数のパネルの使用

RM/Panels は、ウィンドウ形式のアプリケーションをサポートするように設計されており、画面上のさまざまな場所にパネルを表示 (または「ポップアップ」) できます。このタイプのアプリケーションは簡単に作成できますが、考慮すべき特別な事項がいくつかあります。ポップアップ アプリケーションを作成するための 3 つの手順を次に示します。

  1. ポップアップ パネルの要求を検出する。ウィンドウ形式のアプリケーションをコーディングする際の最初のステップは、ポップアップ パネルを表示する必要性を示す条件を検出することです。これはどのような条件でも構いませんが、一般的には、特別なキーボード操作、プッシュ ボタン、またはメニュー コマンドです。検出は、通常、EXECUTE EVENT 標準ランタイム関数に基づくイベント ループ内のテストになります。これを次のコード フラグメントで示します。

    DEMONSTRATE-FUNCTION. 
       PERFORM RMP--EE-PANEL5.
       IF F3-KEY AND (RMP--LAST-FIELD = "CUST-SHIP-CODE") 
          PERFORM SHIP-CODE-DETAILS

    CUST-SHIP-CODE フィールドへの入力時に F3 キーを押すと、ポップアップ パネルを制御する SHIP-CODE-DETAILS プロシージャが実行されます。

  2. ポップアップ パネルを表示、使用、および削除する。ポップアップ パネルは他のパネルと同様に使用されますが、重要な違いが 1 つあります。「パネルをウィンドウにする」パラメーターを選択するか、ランタイム実行時に、パネルが表示される前に RMP--WINDOWTRUE に設定する必要があります。これらのいずれも行わなかった場合、表示からパネルを正常に削除できなくなります。

    次のコード フラグメントは、ポップアップ パネルを表示、使用、および削除する方法を示しています。

    SHIP-CODE-DETAILS.
        PERFORM RMP--DP-PANEL6.
        SET RMP--FIRST-FIELD TO TRUE. 
        PERFORM RMP--EE-PANEL6
           WITH TEST AFTER UNTIL ESCAPE-KEY. 
        PERFORM RMP--RP-PANEL6.

    このパネルはウィンドウ化オプションを選択して作成されているため、コードは通常のパネルを使用する場合と変わりません。パネルが表示され、ユーザー入力のためにイベント ループが使用された後、パネルが削除され、画面の内容が復元されます。

  3. 元のイベント ループの実行を再開する。イベント ループは、入力イベントを実行して次の入力イベントを設定する EXECUTE EVENT 標準ランタイム関数の機能に基づいています。前のステップには、実際には元のイベント ループ内で実行されるイベント ループが含まれているため、次に入力する必要があるフィールド/コントロールを決定する内部変数がポップアップ パネルに対して設定されます。キーボード フォーカスがメイン パネルのフィールド/コントロールに移動するように、これらのいずれかをリセットする必要があります。これを行うには、次の 3 つの方法があります。
    1. RMP--REPEAT-EVENTTRUE に設定する

      これにより、キーボード フォーカスが、パネル上で最後にフォーカスが当たっていたフィールド/コントロールに戻ります。

    2. RMP--FIRST-FIELDTRUE に設定する

      これにより、キーボード フォーカスが、パネル上の最初の有効なフィールド/コントロールに設定されます。

    3. フィールド名を RMP--NEXT-FIELD に指定する

      これにより、キーボード フォーカスが、指定したフィールド/コントロールに移動されます。

    また、内側のループの終了条件によって元のループが終了されないように注意する必要もあります。次のプログラムでは、この問題を防ぐために、ゼロを RMP--EXCEPTION-NUMBER に指定して、元のループの再開時に Esc キーの条件が false になるようにしています。次のコードは、最初のステップで示したサンプルの後に続きます。

       SET RMP--REPEAT-EVENT TO TRUE 
       MOVE 0 TO RMP--EXCEPTION-NUMBER.