Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Image Added


VLF

[ Image Removed |../../index.htm#lansa/lansa048_3355.htm]
Visual LANSA フレームワーク ガイド > フレームワーク・プログラミング > VLF フレームワーク・マネージャー > フレームワーク・ウィンドウの管理 > 他のウィンドウにイベントを通知する

...

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

 
シグナルを送る範囲はWindowScope()パラメータで制御します。CURRENT、ALL、MAINのほか、特定のウィンドウ名も指定できます。
省略値は CURRENT です。  
「目覚まし」メソッドuShowWindowCompletedの使い方

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

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

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

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


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

...

 WindowName(EMP_WINDOW) OpenInfo1(#EMPNO)

...

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

次のフィルターまたはコマンド・ハンドラーを考えてみましょう。ウィンドウEMP_WINDOWで起動する、または起動済みであるものとします。  
ここには「目覚まし」メソッドの呼び出しがあります。
 
Mthroutine uShowWindowCompleted

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


      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つのアプリケーションを切り替えながら操作できるようになります。
[ Image Removed |../../index.htm#lansa/lansa048_3355.htm]OrdersとCustomersが同期して動作するので、2つのアプリケーションを切り替えながら操作できるようになります。