4D v14.3ON EVENT CALL |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v14.3
ON EVENT CALL
ON EVENT CALL
ON EVENT CALL コマンドは、イベントを検知するメソッドであるeventMethodをインストールします。このメソッドは、イベント処理メソッドまたはイベントキャッチメソッドと呼ばれます。 Tip: このコマンドの使用には、上級のプログラミング知識が必要です。通常、イベントを用いて作業を実行する際に、ON EVENT CALLコマンドを使用する必要はありません。フォームの使用において、イベントは4Dによって管理され、適切なフォームやオブジェクトにイベントが送信されます。 Tip: GET MOUSEやShift down等のコマンドを使用して、イベントに関する情報を取得できます。これらのコマンドをオブジェクトメソッドでコールし、オブジェクトに関連するイベントについての必要な情報を取得することができます。これらのコマンドにより、ON EVENT CALLコマンドをもとにしたアルゴリズムを作成する必要がなくなります。 このコマンドのスコープは、現在の作業セッションです。デフォルトで、別々のローカルプロセス内でメソッドが実行されます。いちどに1つのイベント処理メソッドだけを使用できます。メソッドを用いたイベントの検知を中止するには、eventMethodに空の文字列を指定して再度ON EVENT CALLコマンドをコールします。 イベント管理メソッドは別プロセスとして実行されるため、4Dメソッドが1つも実行されなくても、常にアクティブになります。インストール後はイベントが発生するたびに4Dがイベント処理メソッドを呼び出します。管理できるイベントは、マウスボタンのクリックとキーボードからの入力です。 オプションのprocessName引数は、ON EVENT CALLコマンドで作成されるプロセスの名前です。processNameの先頭にドル記号 ($) を付けるとローカルプロセスが開始されます。通常はこのローカルプロセスを使用します。processName引数を省略した場合、デフォルトで4Dは$イベントマネージャーという名前のプロセスを作成します。 警告: イベント処理メソッドで実行する処理については十分注意してください。イベントを発生させるコマンドはコールしないでください。このようなコマンドをコールした場合、イベント処理メソッドの実行から抜けるのが非常に困難になります。Ctrl+Shift+Backspace(Windows)またはCommand-Shift-Option-Control-Backspace(Macintosh)キーにより、イベント管理プロセスを通常のプロセスに切り替えることができます。これによって、それ以降、発生するすべてのイベントは、イベント処理メソッドへ自動的には渡されなくなります。イベント管理が正常な動作ではなくなった場合に、この手法を利用して回復することが可能です。 イベント処理メソッドでは以下のシステム変数を読み取ることができます: MouseDown, KeyCode, Modifiers, MouseX, MouseY, そして MouseProc。これらの変数がプロセス変数であるという点に注意してください。したがって、変数のスコープはイベント処理プロセス内です。別のプロセスでこれらの値が必要な場合、インタープロセス変数へコピーしてください。
Notes
モディファイアキーでは、イベントは発生しません。マウスボタンをクリック、あるいは他のキーが押されなければなりません。Modifiersは4バイトの倍長整数変数で、32ビットの配列としてとらえる必要があります。各モディファイアキーに対応するビットを判定するために、4Dにはビット位置やビットマスクを示す定数があらかじめ定義されています。例えば、イベントに対してshiftキーが押されたかどうかを調べるには、次のようにします: If(Modifiers?? Shift key bit) ` Shiftキーが押されたか または: If((Modifiers & Shift key mask)#0) ` Shiftキーが押されたか Note: Windowsでは、Modifiersとして128が使用でき、イベント生成時にマウスの左ボタンがリリースされたことを示します。
次の例は、ユーザがCtrl+ピリオド(Windows)またはCommand+ピリオド(Macintosh)を押したら、印刷を中止します。ま ず、イベント処理メソッドをインストールします。次にユーザにメッセージを表示して、印刷を中止できることを知らせます。イベント処理メソッド内でイン タープロセス変数<>vbWeStopにTrueが代入されると、既に印刷されたレコードの数をユーザに知らせます。最後にイベント処理メソッドをクリアします: PAGE SETUP Ctrl+ピリオドが押されると、イベント処理メソッド内で<>vbWeStopがTrueに設定されます: ` EVENT HANDLER project method この例題では、ON EVENT CALLが使用されている点に注意してください。これは、ループでPAGE SETUP、PRINT FORM、PAGE BREAKコマンドを使い、特別な印刷用レポートを生成しているためです。 PRINT SELECTIONコマンドを使ってレポートを印刷する場合、ユーザに印刷を中断させるようなイベント処理を実行する必要はありません。この処理はPRINT SELECTIONコマンドにより自動的に行われます。 |
プロパティ
プロダクト: 4D
履歴
初出: < 4D v6 参照
FILTER EVENT ARTICLE USAGE
ランゲージリファレンス ( 4D v12.4) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||