この段階では、部門の再利用可能パーツは便利ではありません。部門のリストを表示でき、ユーザーが1つを選択できますが、結果として何も発生しません。実際には、再利用可能パーツで以下のことができなくてはなりません。

すべてのLANSAコンポーネントは、標準のプロパティ、イベント、およびメソッドのインターフェースを持つので、これらのインターフェースを使用して再利用可能パーツに必要な状態の変更とアクティビティを実行させる必要があります。

uCurrDepartmentという名前の1つのプロパティとuDepartmentChangedという名前の1つのイベントがこのジョブを実行します。

uDepartmentChangedイベントの実装

  1. 再利用可能パーツを編集し、コンボ・ボックスのフォーカスが変更されたときにuDepartmentChangedイベントを送信するようにします。イベントを以下のように定義します。
         define_evt uDepartmentChanged help('This event is signaled when the  department selection is changed')
     
  2. イベントを以下のように通知します。 
         EVTROUTINE HANDLING(#COMBOBOX.ItemGotFocus) 
    Signal uDepartmentChanged
    ENDROUTINE

uCurrDepartmentプロパティの実装

再利用可能パーツを編集し、以下のことを行うuCurrDepartmentという名前のプロパティを定義します。

  1. このためには、以下のようにプロパティを定義する必要があります。
         define_pty name(uCurrDepartment) get(*auto #deptment) set(SetDepartment)
     
  2. それからSetDepartmentプロパティのプロパティ・ルーチンを以下のように追加します。
         PTYROUTINE SetDepartment
    define_map for(*input) class(#deptment) name(#sdeptment)
    selectlist #combobox
       continue if('#deptment *ne #sdeptment.Value')
       set #ComboBox.CurrentItem Focus(True)
       return
    endselect
    ENDROUTINE
     
  3. 再利用可能パーツの新しいバージョンをコンパイルします。

フォームでの新しいプロパティとイベントの使用

  1. テスト・フォームを編集し、以下の1行を追加して社員の詳細が取得されるときに再利用可能パーツに新しい部門の詳細を表示するよう通知する必要があります。
         Set #II_RVP29A uCurrDepartment(#deptment)
     
    さらに、監視してビジュアル・コンポーネントを変更する必要があります。uDepartmentSelectedイベントを送信するときは、常に以下のルーチンを使用して#DEPTMENTフィールドの値を変更する必要があります。 
         EVTROUTINE HANDLING(#II_RVP29A.uDepartmentChanged)
    Change #deptment #II_RVP29A.uCurrDepartment
    ENDROUTINE
     
  2. 最後にフォームのフィールド #DEPTMENT を Read-Only(True) にし、インターフェースから変更できないようにします。実際には、#DEPTMENTフィールドをフォームに置くことはあまりありませんが、このエクササイズのために内容を見ることができるようにしました。
     
  3. テスト・フォームを再コンパイルします。

  4. フォームの新しいバージョンをテストします。社員の詳細を取得した場合は、常に再利用可能パーツにより正確な部門に切り替えられ、コンボ・ボックスで部門を選択した場合は、即座に値がフォームに反映されます。