7.31.2 DEFINE_EVTで使用するDEFINE_MAP

ClickやInitializeのような標準のイベントとは異なり、ユーザー定義のイベントも値を受け取ることができます。イベントに渡す値を指定するには、DEFINE_MAPステートメントをDEFINE_EVTステートメントの後に追加してください。

例として、Form Bという名前のフォームを使用してみましょう。このフォームには、ユーザーが新しい社員レコードを作成すると、それを知らせるユーザー定義のイベントEMPLOYEE_CREATEDがあります。DEFINE_MAPステートメントは、イベントでも新しく追加された社員の社員番号を受け取るように定義します。

以下に、Form BのDEFINE_EVENTブロックを示します。

define_evt name(employee_created)
define_map *input class(#empno) name(#this_emp)
 

Form BにはSIGNALコマンドもあり、このコマンドは、イベントがトリガーされて新しい社員の社員番号がイベント・ルーチンに渡されるとそれを以下のように知らせます。

signal event(employee_created) this_emp(#empno)
 

Form Bのオーナー・フォームには、employee_createdイベントのイベント・ルーチンが含まれています。このイベント・ルーチンは、社員番号を受けとると、この番号を変数#TheValueにマッピングし、その後、この値をオーナー・フォームのフィールド#empnoに割り当てます。

EVTROUTINE HANDLING(#FormB.employee_created) this_emp(#TheValue)
   set com(#empno) value(#TheValue)
ENDROUTINE