他に知っておくべきこと

Visual LANSA

他に知っておくべきこと


以下に注意してください。

·         クリップボードの情報は通常フレームワークの実行を超えて記憶されます。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)

 

これにより、クリップボードに従業員の番号と給与のリスト(とカウント)を作成します。