You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Current »


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

  • No labels