Page History
[ |../../index.htm#lansa/l4wdev06_0925.htm]
現在地:
...
この段階では、部門の再利用可能パーツは便利ではありません。部門のリストを表示でき、ユーザーが1つを選択できますが、結果として何も発生しません。実際には、再利用可能パーツで以下のことができなくてはなりません。
...
すべてのLANSAコンポーネントは、標準のプロパティ、イベント、およびメソッドのインターフェースを持つので、これらのインターフェースを使用して再利用可能パーツに必要な状態の変更とアクティビティを実行させる必要があります。 uCurrDepartmentという名前の1つのプロパティとuDepartmentChangedという名前の1つのイベントがこのジョブを実行します。
uCurrDepartmentという名前の1つのプロパティとuDepartmentChangedという名前の1つのイベントがこのジョブを実行します。
uDepartmentChangedイベントの実装
...
- 再利用可能パーツを編集し、コンボ・ボックスのフォーカスが変更されたときにuDepartmentChangedイベントを送信するようにします。イベントを以下のように定義します。
define_evt uDepartmentChanged help('このイベントは部門選択が変更されると起動します')
...
- イベントを以下のように通知します。
EVTROUTINE HANDLING(#COMBOBOX.ItemGotFocus)Signal uDepartmentChangedENDROUTINE
...
uCurrDepartmentプロパティの実装
再利用可能パーツを編集し、以下のことを行うuCurrDepartmentという名前のプロパティを定義します。
- #DEPTMENTフィールドの値を返すget処理のサポート
- #DEPTMENTフィールドの値を設定し、コンボ・ボックスのフォーカスを選択された部門に移動するset処理のサポート
...
- このためには、以下のようにプロパティを定義する必要があります。
define_pty name(uCurrDepartment) get(*auto #deptment) set(SetDepartment)
- それからSetDepartmentプロパティのプロパティ・ルーチンを以下のように追加します。
...
-
PTYROUTINE SetDepartmentdefine_map for(*input) class(#deptment) name(#sdeptment)selectlist #comboboxcontinue if('#deptment *ne #sdeptment.Value')set #ComboBox.CurrentItem Focus(True)returnendselectENDROUTINE
...
- 再利用可能パーツの新しいバージョンをコンパイルします。
フォームでの新しいプロパティとイベントの使用
...
- テスト・フォームを編集し、以下の1行を追加して社員の詳細が取得されるときに再利用可能パーツに新しい部門の詳細を表示するよう通知する必要があります。
Set #II_RVP29A uCurrDepartment(#deptment)
さらに、監視してビジュアル・コンポーネントを変更する必要があります。uDepartmentSelectedイベントを送信するときは、常に以下のルーチンを使用して#DEPTMENTフィールドの値を変更する必要があります。
...
-
EVTROUTINE HANDLING(#II_RVP29A.uDepartmentChanged)Change #deptment #II_RVP29A.uCurrDepartmentENDROUTINE
...
- 最後にフォームのフィールド #DEPTMENT を Read-Only(True) にし、インターフェースから変更できないようにします。実際には、#DEPTMENTフィールドをフォームに置くことはあまりありませんが、このエクササイズのために内容を見ることができるようにしました。
...
- テスト・フォームを再コンパイルします。
- フォームの新しいバージョンをテストします。社員の詳細を取得した場合は、常に再利用可能パーツにより正確な部門に切り替えられ、コンボ・ボックスで部門を選択した場合は、即座に値がフォームに反映されます。