파워빌더(PowerBuilder) 강의 - 41.User Event
* 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 값을 얻을 수 있게 되었습니다.
수고하셨습니다.