4D v16.3CALL FORM |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
CALL FORM
CALL FORM
CALL FORM コマンドは、window に指定したウィンドウに表示されているフォームのコンテキストにおいて、任意の param パラメーターを使った method の実行を要求します。どのプロセスがそのフォームを持っているかは、問題になりません。 ワーカーを利用したプロセス間通信 (ワーカーについて 参照) の機能は、ワーカーが持つメッセージボックスに基づいて設計されていますが、ウィンドウも同様にメッセージボックスを持っており、ウィンドウがフォームを表示した後に (On Load フォームイベントの後) に使用することができます。CALL FORM はメソッド名と引数をカプセル化し、メッセージの形でウィンドウが持つメッセージボックスに受け渡します。フォームは自身のプロセスにおいて、そのメッセージを実行します。このコマンドはコオペラティブおよびプリエンプティブ・プロセスの両方で使用できるため、プリエンプティブ・プロセスとフォーム間の情報共有をも可能にします。 window には呼び出すフォームを表示しているウィンドウの参照番号を渡します。 method には、window の親プロセスのコンテキストで実行するプロジェクトメソッド名を受け渡します。 param パラメーターに値を受け渡すことで、一つ以上の引数をメソッドに受け渡すことができます。引数の渡し方は、サブルーチンを使う場合と同じです (メソッドに引数を渡す 参照)。フォームのコンテキストで実行を開始する際に、メソッドはこれらの引数を $1, $2, などの値として受け取ります。配列はメソッドのパラメーターに渡せないことに留意してください。また、CALL FORM コマンドを使うにあたっては、次のことに留意してください:
メイン・フォームに設置されたボタンをクリックすると、背景色とメッセージの異なる二つのフォームウィンドウが同時に開くようにします。また、この子ウィンドウのメッセージは、後から違う内容を送信して表示を変更できるようにします。 まず、メイン・フォームのボタンに設定するオブジェクトメソッドです: // 子ウィンドウを作成し、フォームを表示させます doAddMessage メソッドは "FormMessage" フォームのリストボックスに行を追加します: C_TEXT($1) // コール元のプロセス名 ランタイムでは次のような結果になります: CALL FORM コマンドを繰り返し実行することで、メッセージを追加していくことができます: CALL FORM(formRef1;"doAddMessage";Current process name;"Hello 2 Form 1") CALL FORM コマンドを利用することで、プロセス変数を使わずにフォームにカスタム設定 (規定値など) を受け渡すことができます: $win:=Open form window("form")
参照
|
プロパティ
プロダクト: 4D 履歴
初出: 4D v15 R5 ARTICLE USAGE
ランゲージリファレンス ( 4D v16) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||