サブフォームの実行時の動作

サブフォームには、Tabキーによるカーソル移動か、サブフォオームへのクリックで入ることができます。実行エンジンは、サブタスクの最初のコントロールにパークします。パーク可能なコントロールにクリックすると、実行エンジンはフォーカスをサブタスクに移動させ、選択したコントロールにパークします。この時、[タスク前]、[レコード前]、[コントロール前]の処理を実行します。パーク不可のコントロールをクリックした場合、実行エンジンはフォーカスをサブフォームのタスクに移動させ、最初のパーク可能なコントロールにパークします。

実行エンジンが[閉じる]イベントやサブフォーム以外の領域をクリックしたり(リッチクライアントの場合は、[サブフォーム]以外のコントロールをクリックした場合)、[タスク終了条件]特性によってサブタスクを終了させた場合、実行エンジンは、[コントロール後]、[レコード後]、[タスク後]の各処理を実行します(リッチクライアントの場合は、[タスク後]は実行されません)。フォーカスは、親タスクで定義された[タブ順序]特性や[タブ移動方向]特性に基づいて、親タスクの次のコントロールに移動します。

サブタスクに戻り、データビューが再表示されなかった場合、これは、範囲、リンク、ソート、インデックス、結合リンク、または外部結合リンクの設定が修正されていないことを意味しています。サブタスクは、最後に表示された同じページまたはレコードを保持します。

実行エンジンが親タスクにフォーカスを移した場合、サブタスクは自動的にクローズされるため、親タスクがクローズした時は、サブタスクに対する処理は不要になります。

参考

リッチクライアントタスクでは、親タスクの[タスク前]と[タスク後]が実行される時に、サブフォーム内のタスクの[タスク前]と[タスク後]は1回だけ実行されます。

リッチクライアントタスクでは、[サブフォーム]コントロールの[レコード前]が2回実行されるかもしれません。たとえば、キャレットがサブフォームにあるときで、さらに、親タスクのビューが再表示され、サブフォームが再表示された場合です。この場合、親タスクの[レコード前]とサブフォーム上のタスクで実行されます。また、キャレットがサブフォームに戻った場合のみ、サブフォームの[レコード前]が再度実行されます。

実行時は、リッチクライアントのサブフォームエリアでクリックするとキャレットが現在のコントロール上に置かれたままになります。オンラインの場合は、フォーカスがサブフォームタスクに移動します。

同期

親タスクのトランザクションが「遅延」に設定されている場合、[コール]処理コマンドの[同期]特性が「Yes」に設定されているようにサブフォームタスクを呼び出します。

ロック

サブフォームタスクの呼び出しは、親タスクのレコード上で暗黙のロックを発生させません。[コール]処理コマンドの[ロック]特性が「No」に設定されているかのように、サブフォームタスクを呼び出します。