* Powerbuilder 10.5



wf_ 로 시작하는 거 기억 나시나요?

바로 사용자 정의 윈도우 오브젝트 함수입니다.


w_list 를 열고 아무 컨트롤이나 더블클릭해 보세요.

저는 dw_emp 를 더블클릭하겠습니다.



왼쪽 상단의 컨트롤 목록을 열어 하단의 (Functions) 를 선택합니다.


 

 


32 강 Object Function 에서는 사용자가 만든 윈도우 함수가 없으므로 바로 윈도우 함수를 만들 수 있는 창이 열렸는데요.

이번에는 이미 만들어진 wf_retrieve 함수 스크립트 작성 창이 열렸습니다.


가운데 상단의 함수 목록을 클릭하면 (New Function) 이 나오는데요.

이걸 선택하면 새로운 함수를 만들 수 있습니다.

지금까지 초보자를 위한 윈도우 오브젝트 함수 만드는 요령이었습니다. ㅎㅎ




cb_insert.clicked 이벤트(추가버튼의 클릭 이벤트)를 엽니다.

마지막 스크립트 부분을 보면...

// empno 에 값 세팅
int li_empno_next

 

Select nvl(max(empno),0) + 1
Into :li_empno_next
From emp
Using SQLCA;

dw_emp.SetItem(li_row, 'emp_empno', li_empno_next)
//--


emp 테이블의 PK(Primary Key) 인 empno 에 값을 세팅하는 부분입니다.

전에 말씀드렸듯이 한 사람만 이 프로그램을 다룬다면 문제될 것이 없지만 동시에 두 사람 이상 다룬다면 empno 값이 충돌날 가능성이 있습니다.

그래서 이 부분을 저장하는 시점으로 옮기는 편이 바람직합니다.

앞으로 몇 강은 이 부분을 구현하는 강의를 진행하도록 하겠습니다.

일단 이 부분을 코멘트 처리합니다.




먼저 사용자 이벤트(User Event) 에 대해서 알아보겠습니다.

이벤트는 이미 컨트롤마다 정의되어 있습니다.

이런 이벤트와 더불어서 컨트롤마다 사용자가 직접 이벤트를 정의해서 사용할 수 있습니다.


dw_emp 컨트롤에 사용자 이벤트를 만들어 보겠습니다.

먼저, dw_emp 컨트롤을 더블클릭합니다.

그러면 나오는 이벤트 -> 가운데 상단의 이벤트 목록 -> 맨 위의 (New Event) 를 선택

사용자 이벤트 정의 인터페이스는 오브젝트 함수의 그것과 동일합니다.

 


Return Type 을 integer
Event Name 을 ue_empno_next 라고 입력합니다.

ue 는 user event 를 뜻합니다.
사용자 이벤트의 이름은 ue_ 로 시작하는 것이 관례입니다.

좀 전에 코멘트 처리했던 cb_insert.clicked 이벤트의 스크립트 일부입니다.

empno 의 최대값 + 1 값을 반환합니다.







이제 ue_empno_next 만 호출하면 DB로부터 새로 추가할  empno 값을 얻을 수 있게 되었습니다.



수고하셨습니다.


Posted by A4M
,