4D v16.3ON EVENT CALL |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
ON EVENT CALL
|
ON EVENT CALL ( eventMethod {; processName} ) | ||||||||
引数 | 型 | 説明 | ||||||
eventMethod | 文字 |
![]() |
発動されるイベントメソッド, または 空の文字の場合イベントの遮断を停止 | |||||
processName | 文字 |
![]() |
プロセス名 | |||||
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-Control-Backspace(Macintosh)キーにより、イベントマネージャープロセスを終了させることができます。イベント管理が正常な動作ではなくなった場合に、この手法を利用して回復することが可能です。
イベント処理メソッドでは以下のシステム変数を読み取ることができます: MouseDown, KeyCode, Modifiers, MouseX, MouseY, そして MouseProc。これらの変数がプロセス変数であるという点に注意してください。したがって、変数のスコープはイベント処理プロセス内です。別のプロセスでこれらの値が必要な場合、インタープロセス変数へコピーしてください。
プラットフォーム | モディファイア |
Windows | Shift キー, Caps Lock, Alt キー, Ctrl キー |
Macintosh | Shift キー, Caps Lock, Alt(あるいはOption)キー, Command キー, Control キー |
If(Modifiers?? Shift key bit) //Shitキーが押されたか
If((Modifiers & Shift key mask)#0) //Shitキーが押されたか
モディファイア | 定数 |
Shift | Shift key bit / Shift key mask |
Caps Lock | Caps lock key bit / Caps lock key mask |
Alt (OS XではOptionとも呼ばれます) | Option key bit / Option key mask |
WindowsでのCtrl | Command key bit / Command key mask |
OS XでのCtrl | Control key bit / Control key mask |
OS XでのCommand | Command key bit / Command key mask |
右クリック | Control key bit / Control key mask |
次の例は、ユーザがCtrl+ピリオド(Windows)またはCommand+ピリオド(Macintosh)を押したら、印刷を中止します。ま ず、イベント処理メソッドをインストールします。次にユーザにメッセージを表示して、印刷を中止できることを知らせます。イベント処理メソッド内でイン タープロセス変数<>vbWeStopにTrueが代入されると、既に印刷されたレコードの数をユーザに知らせます。最後にイベント処理メソッドをクリアします:
PAGE SETUP
If(OK=1)
<>vbWeStop:=False
ON EVENT CALL("EVENT HANDLER") ` イベント処理メソッドをインストール
ALL RECORDS([People])
MESSAGE("中断するにはCtrl+ピリオドを押す")
$vlNbRecords:=Records in selection([People])
For($vlRecord;1;$vlNbRecords)
If(<>vbWeStop)
ALERT("Printing cancelled at record "+String($vlRecord)+" of "+String($vlNbRecords))
$vlRecord:=$vlNbRecords+1
Else
Print form([People];"Special Report")
End if
End for
PAGE BREAK
ON EVENT CALL("") ` イベント処理メソッドをアンインストール
End if
Ctrl+ピリオドが押されると、イベント処理メソッド内で<>vbWeStopがTrueに設定されます:
` EVENT HANDLER project method
If((Modifiers?? Command key bit) & (KeyCode=Period))
CONFIRM("Are you sure?")
If(OK=1)
<>vbWeStop:=True
FILTER EVENT ` この呼び出しを忘れないでください。そうでないと、4Dもこのイベントを受け取ります
End if
End if
この例題では、ON EVENT CALLが使用されている点に注意してください。これは、ループでPAGE SETUP、PRINT FORM、PAGE BREAKコマンドを使い、特別な印刷用レポートを生成しているためです。
PRINT SELECTIONコマンドを使ってレポートを印刷する場合、ユーザに印刷を中断させるようなイベント処理を実行する必要はありません。この処理はPRINT SELECTIONコマンドにより自動的に行われます。
プロダクト: 4D
テーマ: 割込
番号:
190
初出: < 4D v6
ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)