変更のリスニング
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の給与フィールドに自動的にマップされます。
この非常に単純なサンプル・デモが基礎になり、その上により複雑な情報交換が成り立つのです。