2.24 ユーザーの選択の記憶

アプリケーションにユーザーが変更する可能性があるオプションや選択肢がある場合は、記録して一度だけ変更する必要があるか確認します。

同様に、ユーザーがアプリケーションを起動したときに、最後にアプリケーションを使用したときに操作したものと同じデータで操作を続行する必要がある場合があります。これを簡単に実現するために、最後に終了したときに表示されていたデータでアプリケーションを起動する必要があります。

Windowsリポジトリに設定を保存

フォームの情報をレジストリに保存し、後に取得するには、Changeコマンドと、特別に記憶されている以下の値のいずれかを使用します。

*remembered_value_for_user

特定のユーザーが最後にこのフォームを実行したときのフィールドの値を返します。

*remembered_value_for_user_in_system

特定のユーザーが最後に任意のフォームまたはこのフィールドを含むファンクションを実行したときのフィールドの値を返します。

*remembered_value_for_function

最後にこのフォームが実行されたときのフィールドの値を返します。

*remembered_value_for_system

最後にフィールドを含む任意のフォームまたはファンクションが実行されたときのフィールドの値を返します。

Changeコマンドをこれらの値の1つではじめて実行するときに、対象のフィールドの最後の値のレジストリ・エントリーが作成されます。

注:これらの値はWebインターフェースでは利用できません。セキュリティ上の理由により、Webインターフェースからはレジストリ設定にアクセスできないからです。

サンプル・アプリケーションを使用し、従業員番号に基づいて従業員の名前を取得します。

 

アプリケーションが起動すると、アプリケーションが最後に終了されたときに表示されていた従業員が表示されます。値はこのコードを使用して取得されます。

EVTROUTINE handling(#com_owner.Initialize)

   CHANGE FIELD(#EMPNO #GIVENAME #SURNAME) TO(*remembered_value_for_function)
ENDROUTINE  
 

フォームのサイズと位置の記憶

これと同じ方法を使用してフォームの位置とサイズを記憶することができますが、最初に情報を保存するフィールドを作成する必要があります。

Define #top *dec 7 0
Define #left *dec 7 0
Define #width *dec 7 0
Define #height *dec 7 0
 

それからこれらのフィールドの最後の値を取得し、Initializeイベントでフォームの適切なプロパティに割り当てる必要があります。

EVTROUTINE handling(#com_owner.Initialize)
   CHANGE FIELD(#top #left #width #height) TO(*remembered_value_for_function)
   Set #com_owner top(#top) left(#left) width(#width) height(#height)
ENDROUTINE  
 

アプリケーションが終了したときにこれらの4つのプロパティの現在の値をフィールドに保存するには、以下のように指定する必要があります。

EVTROUTINE handling(#com_owner.closing)
   Change #top    #com_owner.top
   Change #left   #com_owner.left
   Change #width  #com_owner.width
   Change #height #com_owner.height
Endroutine 

 

コードの簡略化

アプリケーションで記憶するすべてのフィールドをグループ化してコードを簡略化できます。例えばそのグループを#Rememberと呼ぶことができるでしょう。

group_by name(#remember) fields(#top #left #width #height #empno #givename #surname)

 

そしてこの行を追加してフォームのイベントを初期化するだけです。

Change #remember *remembered_value_for_user

 

すべてのフォームの記憶

STD_FORMコンポーネントの設定を記憶するために必要なコードを追加し、新しいフォームを作成するたびに使用する場合があります。詳細は「デフォルトのコンポーネントの動作の変更」を参照してください。