変更のリスニング

Visual LANSA

変更のリスニング


Virtual Clipboard機能のこのパーツは、現在のところWindowsアプリケーションのみで有効です。

Virtual Clipboardを使用してコマンド・ハンドラー間で情報を交換する方法については、前のセクションで説明しています。サンプルでは、ユーザーはマウスの右ボタンでポップアップ・メニューのオプションを選択して情報を交換します(つまり、手動での起動です)。

しかし、ユーザーの介在なしに情報の交換が起こる場合、状況によってはVirtual Clipboard機能は非常に効果的です。avSaveValueメソッドで何かがクリップボードに送られると、特別なSignalChange(TRUE)パラメータを使用することができます。TRUEは大文字でなければなりません。例えば、税金計算(DF_DET12)は最近の計算結果を以下のようにポストします。

Invoke #AvFrameworkManager.avSaveValue WithID1(Calculation) WithID2(Tax)

                             FromNValue(#DF_ELNET) Persistent(FALSE)

                             SignalChange(TRUE)

 

別の言い方をすれば、クリップボード上の情報に何らかの変化があったことが、リスニング・フィルターおよびコマンド・ハンドラーすべてに通知されます。変更されたものに注目するかどうかの決定はすべてのリスニング・フィルターおよびコマンド・ハンドラーに依存します。

DF_DET2 (New Employee)には以下のようなルーチンがあります。

Evtroutine Handling(#AvFrameworkManager.avClipBoardChanged) WithId1(#ID1) ToNValue(#NValue) 

   If '#Id1.Value = Calculation'

      Change #Salary #NValue.value   

   Endif

Endroutine

 

ここでは、DF_DET2(New Employee)はクリップボードの変更に注目してシステムをリスニングしています。

変更が起こった場合、Id1の値は直ちにチェックされます(どちらの計算機もID1フィールドに"Calculation"を入れる命名規則を使用します)。変更されたクリップボードの値が計算結果の場合、新しい値が給与フィールドにマップされます。

これはDF_DET2(New Employee)とDF_DET12(Tax Calculator)を同時に実行して試してみることができます。税金計算をする場合、すぐに計算値がNew Employeeの給与フィールドに自動的にマップされます。

この非常に単純なサンプル・デモが基礎になり、その上により複雑な情報交換が成り立つのです。