ファントムタスクは、ウィンドウがフォーカスに無い場合に、[ウィンドウ消去]特性が「No」に設定されたタスクを閉じます。ロジックユニット内に定義された[コール]処理コマンドを実行させることでファントムタスクを開くことができます。ファントムタスクは、プログラムや公開プログラムまたは式から呼び出すこともできます。
ファントムタスクのウィンドウをクリックすると、Magicエンジンは親およびその上位タスクのロジックユニット内の対応する[コール]処理コマンドを検索し、そのロジックユニットに移ります。
Magicエンジンは、以下のロジックユニットを検索します:
コントロール前
コントロール確認
コントロール後
システム
ユーザイベント
内部イベント
システムやユーザ、内部イベントは、コントロールを指定したり、指定しないでロジックユニットに定義することができます。Magicエンジンは、ファントムタスクの親タスクや上位タスクを下位から上位の方向でロジックユニットを検索します。
対応するロジックユニットを見つけるには、以下の3つの条件がTrueと評価されなければりません:
[ロジックユニット特性]が有効になっている。
[コール]処理コマンドは、ファントムタスクを呼び出している。
ブロック条件は、ブロックLoopでない。
注意: |
[ブロックLoop]処理コマンドは常にFalseと評価されます。 |
無効な[コール]処理コマンドに位置付けされた場合、Magicエンジンは最後に定義されたコントロール上にとどまり、ファントムタスクを開きません。
対応する[コール]処理コマンドがコントロールを指定していないロジック宇ニット内に定義されている場合、Magicエンジンはファントムタスクのために[コール]処理コマンドを起動させるためのイベントを発行のみを行います。ファントムタスクが実行された後、Magicエンジンは[イベント]テーブルに定義された内容に基づいて現在のイベントを通常どうりに再開します。
[コントロール]ロジックユニット内で[コール]処理コマンドの条件がTrueと評価された場合、Magicエンジンはそのコントロールに移動し、ファントムタスクのために対応する[コール]処理コマンドを実行します。
対応する処理コマンドが[コントロール前]ロジックユニット内に定義されている場合、Magicエンジンはそのコントロール上で[コール]処理コマンドを実行し、コントロールにパークします。対応する[コール]処理コマンドが[コントロール確認]または[コントロール後]のロジックユニットで定義されている場合、Magicエンジンは次のコントロール上で[コール]処理コマンドを実行し、コントロールにパークします。