Visual LANSA フレームワーク ガイド > フレームワーク・プログラミング > VLF フレームワーク・マネージャー > フレームワーク・ウィンドウの管理 > 他のウィンドウにイベントを通知する
他のウィンドウにイベントを通知する

VLF-WIN では、avSignalEvent メソッドを使って、他のウィンドウにイベントを通知することができます。

 

シグナルを送る範囲はWindowScope()パラメータで制御します。CURRENT、ALL、MAINのほか、特定のウィンドウ名も指定できます。

省略値は CURRENT です。

 

「目覚まし」メソッドuShowWindowCompletedの使い方

シグナルを送ってウィンドウを操作できるのは、当該ウィンドウが開いており、イベントを監視している場合に限ります。

 

しかしウィンドウが本当に開いているかどうか分からない場合は、次のようにしてください。

 

MAINウィンドウのコマンド・ハンドラーまたはフィルターに、次のメソッドが記述されているとします。

 

#AvFrameworkManager.avShowWindow Caller(#Com_Owner) For(BUSINESSOBJECT) ofType(EMPLOYEES)

                                 WindowName(EMP_WINDOW) OpenInfo1(#EMPNO)

 

 

これは、「EMP_WINDOWというウィンドウを、必要ならば生成したうえで、表示せよ。ここにはEMPLOYEESビジネス・オブジェクトを表示する。ウィンドウを開く際の情報文字列として、#EMPNOの値を設定せよ」と指示することに当たります。

 

次のフィルターまたはコマンド・ハンドラーを考えてみましょう。ウィンドウEMP_WINDOWで起動する、または起動済みであるものとします。

 

ここには「目覚まし」メソッドの呼び出しがあります。

 

Mthroutine uShowWindowCompleted Options(*Redefine)

 

   #Empno := #Com_Owner.avCurrentWindow.OpenInfo<1>

  

   Use message_box_show (ok ok info *Component #Empno)

 

Endroutine

 

 

このメソッドは、他のウィンドウが次のメソッドを実行すると、その都度呼び出されます。

 

        #AvFrameworkManager.avShowWindow WindowName(EMP_WINDOW)

 

このメソッドは、「起きろ。他のウィンドウが何かをするよう要求している」と言っていることに相当します。「起こされた」コマンド・ハンドラーやフィルターは通常、開かれた情報文字列として渡された情報を調べて、次に何をすればよいか判断します。

 

この機能は、高度なビジネス・オブジェクト間通信にも利用できます。例えば、顧客明細を操作するCUSTOMER_WINDOWウィンドウと、注文情報を管理するORDER_WINDOWウィンドウがあるとします。

 

CUSTOMER_WINDOWのコマンド・ハンドラーには、次のようなメソッド呼び出しがあります。

 

#AvFrameworkManager.avShowWindow Caller(#Com_Owner) For(BUSINESSOBJECT)

                                  ofType(ORDERS) WindowName(ORDER_WINDOW)

                                  OpenInfo1(#OrderNumber)

 

 

 

一方、ORDER_WINDOWのコマンド・ハンドラーにも、次のようなメソッド呼び出しがあるものとします。

 

#AvFrameworkManager.avShowWindow Caller(#Com_Owner) For(BUSINESSOBJECT)

                                  ofType(CUSTOMERS) WindowName(CUSTOMER_WINDOW)

                                  OpenInfo1(#CustomerNumber)

 

 

OrdersとCustomersが同期して動作するので、2つのアプリケーションを切り替えながら操作できるようになります。