フック一覧 Local (画面フック) | 前の画面フック 次の画面フック |
VB C# ALL プログラミング言語によるフィルタ (ここで選んだ言語で選別された説明や図だけが表示されます)
◇ 役割 (この画面フックメソッドに委託されている処理)
セントラル側の FormBase のメソッド invokeLocal のパラメタで指定されたオブジェクトをローカル側で受信し、ローカル側で行うべき処理を実施し、その処理の結果として作成されたオブジェクトをセントラル側に送り返す。
ワンピーススタイルの場合には、セントラル・ローカル間の通信がなされないだけで、 ツーピーススタイルの場合と同じように動作する。
◇ 配置 (ツーピーススタイルの場合にこの画面フックメソッドをどこに配置できるか)
ローカルピースに配置するか、または配置しない。セントラルピースに配置することは禁止されている。
◇ 代表的な書き方 (詳しい構文はフックメソッドの書き方を参照)
VB での書き方:
Friend Function Local(パラメタ宣言列) As Object
または
Friend Function 画面略称_Local(パラメタ宣言列) As Object
パラメタ宣言列の中には、この画面フックメソッド固有のパラメタとして ByVal Rm_Object As Object を含めることができる。
C# での書き方:
internal object Local(パラメタ宣言列)
または
internal object 画面略称_Local(パラメタ宣言列)
パラメタ宣言列の中には、この画面フックメソッド固有のパラメタとして object Rm_Object を含めることができる。
Java での書き方:
Object Local(パラメタ宣言列)
または
Object 画面略称_Local(パラメタ宣言列)
パラメタ宣言列の中には、この画面フックメソッド固有のパラメタとして Object Rm_Object を含めることができる。
Rm_Object には、セントラル側から送り込まれた送付オブジェクトが設定されている。
なお、フック名としては、Local の他に現地処理を用いることができる。
◇ 呼び出される契機 (以下が切っ掛けとなりこのフックメソッドが呼び出される)
普通のフックメソッドは、アプリ操作者の操作・指示を契機として呼び出されるが、このフックメソッドはセントラル側の FormBase のメソッド invokeLocal の呼出しを契機として呼び出される。
すなわち、セントラル側で FormBase のメソッド invokeLocal が呼び出されると、 セントラル・ローカル間の通信がなされ、ローカル側の Local フックメソッドが呼び出される。
ワンピーススタイルの場合には、セントラル・ローカル間の通信がなされないだけで、 ツーピーススタイルの場合と同じように動作する。
◇ 戻り値の意味とデフォルト動作(戻り値による FormBase への伝言)
ローカル側で行うべき処理を実施し、その処理の結果を示すために、オブジェクトを作成して戻り値とするか、または Nothing (null) を戻り値とする。この戻り値がセントラル側の呼出し元 invokeLocal の戻り値となる。
◇ 代行メッセージ (処理の流れに応じて発せられるメッセージ; カスタマイズ可能)
(関係する代行メッセージなし)
◇ 使用上のヒントと注意事項
特定の項目固有のローカル側呼出し処理は、この画面フックメソッドではなく、項目フックメソッド Local で行ってください。
セントラル側主導機能 (複スレッドモード) オプションをオンにしてある場合に限って、セントラル側のメソッド invokeLocal を用いて、ローカル側のフックメソッド Local を呼び出すことができる。なお、このオプションは、ダイアログ画面オプションで指定できる。
フックメソッド Local の中では、invokeLocal および invokeCentral を呼び出すことが禁止されている。
また、フックメソッド Local の中では、新たにアプリケーションフォームを表示するなどセントラル側の呼出しを発生させることが禁止されている。
Rm_Object には、セントラル側で呼び出した FormBase の invokeLocal メソッドに渡したパラメタ (Object 型) の内容が格納されている。
送受信するオブジェクトは、<Serializable()> または [Serializable()] 指定をした Public Class として、ローカル・セントラル双方のソリューションから共に参照できるアセンブリに含めて、ローカルプロジェクトおよびセントラルプロジェクトから参照設定することが必要。したがって、これらを定義したクラスモジュールは、ca プロジェクトに含めるのがお勧め。
送受信するオブジェクトは、java.io.Serializable インターフェースを実装した public クラスとして、ローカル・セントラル双方から共に参照できることが必要。したがって、これらを定義したクラスモジュールは、ca プロジェクトに含めるのがお勧め。
◇ 関連事項
RHMI (Remote Hook Method Invocation) に関係するフックメソッドには、 画面フックメソッド Central,項目フックメソッド Central,画面フックメソッド Local (本フックメソッド),項目フックメソッド Local の四つがある。
これらのフックメソッドは、それぞれローカル側の FormBase のメソッド invokeCentral,ローカル側の ItemBase のメソッド invokeCentral,セントラル側の FormBase のメソッド invokeLocal,セントラル側の ItemBase のメソッド invokeLocal の呼出しを契機として呼び出される。
◇ 使用例
' フックメソッド Local を呼び出すセントラル側のプログラム。 Dim JutyuCdObj As Records.JutyuCd = CType(fB.invokeLocal(Nothing), Records.JutyuCd)
' セントラル側から呼び出されてローカル側でしかできない処理を行う (Local)。 Friend Function 現地処理(ByVal fB As FormBase, ByVal Rm_Object As Object) As Object Dim res As DialogResult = fB.MessageBoxShow(fB.myForm, _ "データを更新してよろしいですか ?", _ "確認", _ MessageBoxButtons.YesNo) Return res End Function ' 現地処理
// フックメソッド Local を呼び出すセントラル側のプログラム。 Records.JutyuCd JutyuCdObj = (Records.JutyuCd)fB.invokeLocal(null);
// セントラル側から呼び出されてローカル側でしかできない処理を行う (Local)。 internal object 現地処理( FormBase fB, object Rm_Object ) { object anyObject = null; ; // (ここにローカルコンピュータが実行する処理を記述します。) return anyObject; } // 現地処理
// フックメソッド Local を呼び出すセントラル側のプログラム。 Records.JutyuCd JutyuCdObj = (Records.JutyuCd) fB.invokeLocal(null);
// セントラル側から呼び出されてローカル側でしかできない処理 ・・・ を行う (Local)。 Object 現地処理( FormBase fB, Object Rm_Object ) { Object anyObject = null; ; // (ここにローカルコンピュータが実行する処理を記述します。) return anyObject; } // 現地処理