フォームイベント
フォームイベントとは、フォームメソッドやフォームオブジェクトメソッドの実行につながるイベントのことです。フォームイベントにより、アプリケーションの流れをコントロールしたり、特定のイベントが発生したときにのみ実行されるコードを書くことができます。
コードの中では、トリガーされたイベントを返す FORM Event コマンドを使ってイベントを制御します。例:
// ボタンのコード
If(FORM Event.code=On Clicked)
// ボタンがクリックされたときの動作
End if
すべてのフォームとフォーム上のすべてのアクティブなオブジェクトは、事前に定義されたイベントのセットを受け取ることができますが、フォームやオブジェクト毎に有効にされたイベントだけが実際に発生します。
イベントオブジェクト
各イベントは、FORM Event コマンドによってオブジェクトとして返されます。デフォルトで、以下のプロパティが含まれています:
| プロパティ | 型 | 説明 |
|---|---|---|
| objectName | text | イベントをトリガーしているオブジェクト名。フォームによってトリガーされている場合には含まれていません。 |
Form event code によっても返されます。| |description|text|フォームイベント名 (例: "On After Edit")|
イベントが発生したオブジェクトによっては追加のプロパティが含まれていることがあります。特に:
- リストボックス and リストボックスカラム は
columnNameあるいはisRowSelectedという追加のプロパティ を返します。 - 4D View Pro エリア は、
sheetNameやactionといったプロパティを On After Edit イベントオブジェクトに返します。
イベントとメソッド
フォームイベントが発生すると、4D は以下のアクションをおこないます:
- まず 4D は、フォーム中のオブジェクトをブラウズし、発生したオブジェクトイベントがプロパティで選択されているすべてのオブジェクトのオブジェクトメソッドを呼び出します。
- 次に、発生したイベントに対応するフォームイベントがフォームのプロパティで選択されていれば、フォームメソッドを呼び出します。
オブジェクトメソッドが特定の順序で呼び出されることを期待することはできません。おおまかに言って、オブジェクトメソッドは常にフォームメソッドよりも前に呼び出されます。オブジェクトがサブフォームの場合、サブフォームのリストフォームのオブジェクトメソッドが呼び出され、次にリストフォームのフォームメソッドが呼び出されます。そして 4D は引き続き、親フォームのオブジェクトメソッドを呼び出します。つまり、オブジェクトがサブフォームの時、 4D はサブフォームオブジェクト内で、オブジェクトとフォームメソッドと同じルールを適用します。
On Load と On Unload イベントを除き (後述参照)、発生したイベントがフォームイベントプロパティで選択されていなかったとしても、オブジェクトプロパティで選択されていれば、そのオブジェクトメソッドの呼び出しが妨げられることはありません。言い換えれば、フォームレベルでイベントを有効あるいは無効にしても、オブジェクトイベントプロパティには影響ありません。
特定のイベントに関連するオブジェクトの数は、イベントの性質により異なります。
イベント一覧
以下の表は、それぞれのイベントごとにどのようにオブジェクトメソッドとフォームメソッドが呼ばれるかを概説します:
| イベント | コード | オブジェクトメソッド | フォームメソッド | 対象オブジェクト |
|---|---|---|---|---|
| On Activate | 11 | X | ◯ | なし |
| On After Edit | 45 | ◯ | ◯ | 関係するオブジェクトのみ |
| On After Keystroke | 28 | ◯ | ◯ | 関係するオブジェクトのみ |
| On After Sort | 30 | ◯ (リストボックス) | X | 関係するオブジェクトのみ |
| On Alternative Click | 38 | ◯ (ボタンとリストボックス) | X | 関係するオブジェクトのみ |
| On Before Data Entry | 41 | ◯ (リストボックス) | X | 関係するオブジェクトのみ |
| On Before Keystroke | 17 | ◯ | ◯ | 関係するオブジェクトのみ |
| On Begin Drag Over | 46 | ◯ | ◯ | 関係するオブジェクトのみ |
| On Begin URL Loading | 47 | ◯ (Webエリア) | X | 関係するオブジェクトのみ |
| On Bound variable change | 54 | X | ◯ | なし |
| On Clicked | 4 | ◯ | ◯ | 関係するオブジェクトのみ |
| On Close Box | 22 | X | ◯ | なし |
| On Close Detail | 26 | ◯ (リストボックス) | ◯ | リストボックスのみ |
| On Collapse | 44 | ◯ (階層リストとリストボックス) | X | 関係するオブジェクトのみ |
| On Column Moved | 32 | ◯ (リストボックス) | X | 関係するオブジェクトのみ |
| On Column Resize | 33 | ◯ (リストボックスと 4D View Pro エリア) | X | 関係するオブジェクトのみ |
| On Data Change | 20 | ◯ | ◯ | 関係するオブジェクトのみ |
| On Deactivate | 12 | X | ◯ | なし |
| On Delete Action | 58 | ◯ (階層リストとリストボックス) | X | 関係するオブジェクトのみ |
| On Display Detail | 8 | ◯ | ◯ | すべてのオブジェクト |
| On Double Clicked | 13 | ◯ | ◯ | 関係するオブジェクトのみ |
| On Drag Over | 21 | ◯ | X | 関係するオブジェクトのみ |
| On Drop | 16 | ◯ | ◯ | 関係するオブジェクトのみ |
| On End URL Loading | 49 | ◯ (Webエリア) | X | 関係するオブジェクトのみ |
| On Expand | 43 | ◯ (階層リストとリストボックス) | X | 関係するオブジェクトのみ |
| On Footer Click | 57 | ◯ (リストボックス) | X | 関係するオブジェクトのみ |
| On Getting Focus | 15 | ◯ | ◯ | 関係するオブジェクトのみ |
| On Header | 5 | ◯ | ◯ | すべてのオブジェクト |
| On Header Click | 42 | ◯ (リストボックスと 4D View Pro エリア) | X | 関係するオブジェクトのみ |
| On Load | 1 | ◯ | ◯ | すべてのオブジェクト |
| On Load Record | 40 | X | ◯ | なし |
| On Long Click | 39 | ◯ (ボタン) | ◯ | 関係するオブジェクトのみ |
| On Losing Focus | 14 | ◯ | ◯ | 関係するオブジェクトのみ |
| On Menu Selected | 18 | X | ◯ | なし |
| On Mouse Enter | 35 | ◯ | ◯ | すべてのオブジェクト |
| On Mouse Leave | 36 | ◯ | ◯ | すべてのオブジェクト |
| On Mouse Move | 37 | ◯ | ◯ | すべてのオブジェクト |
| On Mouse Up | 2 | ◯ | X | 関係するオブジェクトのみ |
| On Open Detail | 25 | ◯ (リストボックス) | ◯ | リストボックスのみ |
| On Open External Link | 52 | ◯ (Webエリア) | X | 関係するオブジェクトのみ |
| On Outside Call | 10 | X | ◯ | なし |
| On Page Change | 56 | X | ◯ | なし |
| On Plug in Area | 19 | ◯ | ◯ | 関係するオブジェクトのみ |
| On Printing Break | 6 | ◯ | ◯ | すべてのオブジェクト |
| On Printing Detail | 23 | ◯ | ◯ | すべてのオブジェクト |
| On Printing Footer | 7 | ◯ | ◯ | すべてのオブジェクト |
| On Resize | 29 | X | ◯ | なし |
| On Row Moved | 34 | ◯ (リストボックス) | X | 関係するオブジェクトのみ |
| On Row Resize | 60 | ◯ (4D View Pro エリア) | X | 関係するオブジェクトのみ |
| On Scroll | 59 | ◯ | X | 関係するオブジェクトのみ |
| On Selection Change | 31 | ◯ | ◯ | 関係するオブジェクトのみ |
| On Timer | 27 | X | ◯ | なし |
| On Unload | 24 | ◯ | ◯ | すべてのオブジェクト |
| On URL Filtering | 51 | ◯ (Webエリア) | X | 関係するオブジェクトのみ |
| On URL Loading Error | 50 | ◯ (Webエリア) | X | 関係するオブジェクトのみ |
| On URL Resource Loading | 48 | ◯ (Webエリア) | X | 関係するオブジェクトのみ |
| On Validate | 3 | ◯ | ◯ | すべてのオブジェクト |
| On VP Range Changed | 61 | ◯ (4D View Pro エリア) | X | 関係するオブジェクトのみ |
| On VP Ready | 9 | ◯ (4D View Pro エリア) | X | 関係するオブジェクトのみ |
| On Window Opening Denied | 53 | ◯ (Webエリア) | X | 関係するオブジェクトのみ |
イベントに対応するプロパティが選択されている場合にのみ、フォームやオブジェクトのメソッドが呼び出されることに留意してください。デザインモードのフォームエディターのプロパティリストでイベントを無効にすると、メソッドが呼び出される回数を減らすことができ、フォームの実行速度を最適化できます。
警告: オブジェクトの On Load と On Unload イベントが生成されるには、オブジェクトとオブジェクトが属するフォームの両方で有効にされていなければなりません。オブジェクトのみでイベントが有効になっている場合、イベントは生成されません。 これら 2つのイベントはフォームレベルでも有効にされていなければなりません。