イベント ハンドラー
クライアント スクリプトのロジックは、フォーム イベントのイベント ハンドラーとして実行されます。 ロジックを実行するには、イベント ハンドラーを登録する必要があります。 一般的なイベントの登録は、フォームのプロパティ ダイアログまたはフォームのコードから行えます。 一部のイベントは、コードでのみ登録できます。 イベント ハンドラーは複数のフォームで実行できますが、それぞれのフォームに個別に登録する必要があります。
フォームのプロパティから登録する
フォームのプロパティを使用してイベント ハンドラーを登録すると、設計時にイベント ハンドラーの静的な設定が作成されます。 フォームが読み込まれるたびに、同じイベント ハンドラーが実行されます。 コードでイベント ハンドラーを登録する場合と異なり、ロジックによって登録するイベント ハンドラーを決定できます。
フォーム デザイナーでは、以下のイベントのイベント ハンドラーを登録できます。
フォーム: このハンドラーでは、OnLoad イベント ハンドラーと OnSave イベント ハンドラーを登録できます。
タブ: このハンドラーでは、フォームの各タブの状態の変更のイベント ハンドラーを登録できます。 通常、これはデータの動的な読み込みなどを行うために、タブが開いているかどうかを確認するために使用されます。
列: このハンドラーでは、列のデータが変更された場合のイベント ハンドラーを登録できます。
次の図は、取引先企業テーブルの OnLoad イベント ハンドラーを登録する例を示しています。
よくあるパターンの 1 つとして、OnLoad ハンドラーを 1 つ登録してから、残りのイベント ハンドラーをコードの OnLoad イベント ハンドラー ロジックで登録します。 この方法の利点は、ロジックを複数のフォームで使用する必要がある場合に、それぞれのフォームでイベント ハンドラーをすべて登録する必要がないことです。 もう 1 つの利点は、一部のイベント ハンドラーを動的に決定する必要がある場合に、ロジックを使用してハンドラーを登録するかどうかを決定できることです。 たとえば、いつフォームを読み込むか指定できる場合や、列が読み取り専用または非表示の場合、列のイベント ハンドラーの登録をスキップすることができます。
コードを使用して登録する
コードを使用したイベント ハンドラーの登録は、設定を使用して登録する必要がある OnLoad 以外のすべてのハンドラーで行うことができます。 次に、この OnLoad ハンドラーを使用して、コードで他のハンドラーを登録できます。 次の例では、以下のステップを実行して、取引先企業テーブルの取引先企業番号の列に OnChange ハンドラーを登録します。
取引先企業フォームの OnLoad イベントで実行される関数を作成します。
その関数で addOnChange を呼び出して、取引先企業番号の列が変更された場合に呼び出す関数を登録します。
取引先企業フォームのプロパティに OnLoad イベント ハンドラーを登録します。
function LearnLab_handleAccountOnLoad(executionContext)
{
var formContext = executionContext.getFormContext();
formContext.getAttribute('accountnumber').addOnChange(LearnLab_handleOnChangeAccountNumber)
}
function LearnLab_handleOnChangeAccountNumber(executionContext)
{
var formContext = executionContext.getFormContext();
formContext.ui.setFormNotification('Check other systems', 'INFO', 'AcctNumber');
}
このコードは、取引先企業番号の列のデータが変更された場合にフォーム レベルの通知を表示します。
その他にも、ハンドラーを登録できるクライアント側のイベントが多くあります。