[
|../../index.htm#lansa/l4wdev06_0285.htm]
現在地:
ユーザー・インターフェースが完了したので、コードを記述します。ソースタブをクリックし、フォームにソース・コードを表示します。フォームに置いたコントロールとフィールドのDEFINE_COMステートメントがエディターに自動的に作成されていることに注目してください。これらのステートメントは、コンポーネントに定義されたプロパティを示します。
3a.すべての社員の詳細フィールドのグループを作成する
社員の詳細フィールドを簡単に処理できるよう、グループ化します。
GROUP_BY NAME(#ALLFLDS) FIELDS(#EMPNO #SURNAME #GIVENAME #ADDRESS1 #ADDRESS2 #ADDRESS3 #POSTCODE #PHONEHME #PHONEBUS #STARTDTE #TERMDATE #DEPTMENT #SECTION #SALARY #MNTHSAL)
3b.取得ボタンのイベント・ルーチンを記述する
1. 名字の一部をもとにリストにデータを表示するコードを記述するには、詳細タブを表示し、リストの取得ボタンを選択し、イベントタブを1番上に持ってきます。
2. Clickイベントをダブルクリックします。エディターにより、ソースビューにEVTROUTINEステートメントとENDROUTINEステートメントが挿入されました。
![]()
詳細タブのClickイベントのアイコンが変化し、イベントのルーチンが指定されたことを示します。
![]()
3. 取得ボタンのClickイベントに以下のコードを追加します。
EVTROUTINE HANDLING(#GET.Click) change #surname #partname clr_list #ltvW_1 SELECT FIELDS(#ltvw_1) FROM_FILE(PSLMST2) WITH_KEY(#SURNAME) GENERIC(*YES) add_entry #ltvw_1 endselect ENDROUTINE
イベント・ルーチンは、#PARTNAMEフィールドに入力された値を#SURNAMEに割り当てます。それからリスト・ビューをクリアします。SELECTのループで名字が#SURNAMEの値と一致するすべての社員を選択し、エントリーをリスト・ビューに追加します。
4. 社員の詳細を取得するイベント・ルーチンを記述します。
a. リスト・ビューのItemGotSelectionイベントを呼び出すClickイベント・ルーチンを作成します。このイベントは、ユーザーがリスト・ビューの社員を選択したときにトリガーされます。
b. ここで、選択された社員のコードを取得する以下のコードを記述します。
EVTROUTINE HANDLING(#LTVW_1.ItemGotSelection) FETCH FIELDS(#ALLFLDS) FROM_FILE(PSLMST) WITH_KEY(#EMPNO) ISSUE_MSG(*YES) ENDROUTINE
5. 新しい社員を入力するイベント・ルーチンを記述します。
作成ボタンのClickイベントのルーチンを作成します。イベントを使用してすべてのフィールドをブランクにし、新しい社員の詳細を入力できるようにします。
EVTROUTINE HANDLING(#NEW.Click) change #allflds *Null ENDROUTINE
6. 社員を削除するイベント・ルーチンを記述します。
現在選択されている社員を削除する削除ボタンのClickイベントのルーチンを作成します。
EVTROUTINE HANDLING(#DELETE.CLICK) DELETE FROM_FILE(PSLMST) WITH_KEY(#EMPNO) ISSUE_MSG(*YES) ENDROUTINE
7. 変更を保存するイベント・ルーチンを記述します。
既存の社員を更新したり、新しい社員の詳細を挿入するための保存ボタンのClickイベントのイベント・ルーチンを作成します。
EVTROUTINE HANDLING(#SAVE.CLICK) check_for in_file(pslmst) with_key(#empno) val_error(*next) if_status is(*EQUALKEY) UPDATE FIELDS(#ALLFLDS) IN_FILE(PSLMST) WITH_KEY(#EMPNO) ISSUE_MSG(*YES) IF_STATUS IS(*OKAY) MESSAGE MSGTXT('Employee details have been updated.') endif else INSERT FIELDS(#ALLFLDS) TO_FILE(PSLMST) ISSUE_MSG(*YES) IF_STATUS IS(*OKAY) MESSAGE MSGTXT('Employee details have been added.') endif endif ENDROUTINE
イベント・ルーチンでは、最初に社員が存在するかどうかをチェックします。存在する場合は、社員の詳細を更新します。社員番号に一致するレコードがない場合は、社員の詳細を挿入します。メッセージは、更新と挿入の後に表示されます。
[
|../../index.htm#lansa/l4wdev06_0285.htm]