[ |../../index.htm#lansa/lansa048_3355.htm]
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つのアプリケーションを切り替えながら操作できるようになります。
[ |../../index.htm#lansa/lansa048_3355.htm]