他に知っておくべきこと
以下に注意してください。
· クリップボードの情報は通常フレームワークの実行を超えて記憶されます。avSaveValueメソッドを使用していれば、Persistent(FALSE)にすることでこれを避けることができます。
· クリップボードに秘密の情報や重要な情報を入れてはいけません。
· クリップボード上の情報を更新する量と頻度は、アプリケーションのパフォーマンスに影響します。
WithIdn
クリップボードに送った情報には一組の識別子が割り当てられます。
Windowsアプリケーションには、WithIdnというメソッドのパラメータがあります。
Windowsアプリケーションでは最高5つまで、Webブラウザー・アプリケーションでは最高3つまで持つことできます。それぞれ最大文字数は32文字までで、連結したデータを持つことができます。
WithIdnの値を使用するにはプロトコルを定義する必要があります。
通常、WithID1(*Component)は、コンポーネントのクリップボードのエントリーが他のコンポーネントのクリップボードのエントリーと干渉しないかを確認する方法です。
もちろん、クリップボードのエントリーを共有したい場面もあります。また、使用しているフィルターやコマンド・ハンドラーがマルチインスタンス・コンテキストで稼動している場合もあります。クリップボード・エントリーの共有については、「Virtual Clipboard」を参照してください。
ToAValueおよびFromAValue
多くの例で、ToAValueおよびFromAValueパラメータを英数字情報に使用しています。これに相当する数値型のToNValueおよびFromNValueパラメータもあります。
ToAValue/FromAValue情報は、最高255文字までです。
ToNValue/FromNValue情報は数値型30,9ですが、最大精度は通常オペレーティング・システムによって15桁(整数または小数)に制限されます。
ReturnCode
メソッドavRestoreValueには、クリップボード・エントリーが検出されたかどうかをチェックするパラメータ、ReturnCodeがあります。例えば以下のようになります。
Invoke #AvFrameworkManager.avRestoreValue WithID1(*Component) WithID2(NumberofCopies) ToNValue(#NumCopies) ReturnCode(#Io#Sts)
If '#IO$Sts *ne OK'
Change #NumCopies 42
Endif
UseAValueDefaultおよびUseNValueDefault
メソッドavRestoreValueにはクリップボードのエントリーが検出できなかったときに使用するデフォルトを指定するパラメータ、UseAValueDefaultおよびUseNValueDefaultがあります。したがって、前述の例は、以下のように簡単に記述できます。
Invoke #AvFrameworkManager.avRestoreValue WithID1(*Component) WithID2(NumberofCopies) ToNValue(#NumCopies) UseNValueDefault(42)
ForLanguage
ForLanguageというクリップボードの補助パラメータがあります。これは記憶したものが言語に依存する情報の場合に使用できます。通常以下のように使います。
Invoke #AvFrameworkManager.avSaveValue WithID1(*Component) WithID2(#HelloMessage.Name) FromAValue(#HelloMessage) FoLanguage(*Language)
したがって、クリップボードは異なる言語ごとに異なる#HelloMessage値を保持できることになります。
Instance
Instanceという数値型の補助パラメータがあります。これはクリップボードの値のインスタンスを保持します。これはクリップボードにリストを記憶させる場合に効果的です。
例えば、使用しているプログラムに従業員番号(#EmpNo)および給与(#Salary)を含むリスト・ビューがあるとします。この場合、以下のコードを使用します。
Change #Instance 0
SelectList #ListView
Change #Instance '#Instance + 1'
Invoke #AvFrameworkManager.avSaveValue WithID1(*Component) WithID2(EMPLOYEE_LIST_EMPNO)
FromAValue(#Empno) Instance(#Instance)
Invoke #AvFrameworkManager.avSaveValue WithID1(*Component) WithID2(EMPLOYEE_LIST_SALARY)
FromNValue(#Salary) Instance(#Instance)
Endselect
Invoke #AvFrameworkManager.avSaveValue WithID1(*Component) WithID2(EMPLOYEE_LIST_COUNT)
FromNValue(#Instance)
これにより、クリップボードに従業員の番号と給与のリスト(とカウント)を作成します。