CAFE

파워빌더 TIP

[TIP]상속받은 오브젝트에서 부모의 이벤트 결과 가져오기...

작성자파빌신|작성시간09.12.27|조회수771 목록 댓글 0

보통 오브젝트(윈도, userobject, datawindow... 등등)를 상속받아서 사용할때 부모의 이벤트(Script)가 실행되고

 

자식의 이벤트가 실행 됩니다.

(물론 Extend Ancestor Scrip옵션을 빼면 부모 이벤트(Script)는 실행하지 않습니다.)

 

헌데 부모이벤트의 실행 여부에 따라서 자식의 이벤트(Script)의 실행 여부를 결정해야 하는 경우가 있습니다.

 

이런 경우 초보 분들은 참 난감해 합니다.

 

그래서 ExAncS옵션을 풀고 부모의 스크립트를 그대로 자식으로 복사 하고는 합니다.

(이렇게 해도 아무상관이 없습니다. 그러나 소스가 커지는 단점이 있습니다.)

 

이렇게 불편한 내용을 간단하게 해결하는 구조를 만들어 볼까 합니다.

 

가장 많이 사용하는 window를 예로 들겠습니다.

1. instance Variables에 변수를 선언 합니다.

Private:

integer ii_open = 0 // 오픈이벤트 실행 여부

 

2. Open Evnet 에서 Script

ii_open = 0

[오픈 이벤트에서 수행할 내용을 적습니다.]

if false then ii_open = -1 //자식 이벤트가 실행 되면 안된다.

 

3. integer wf_OpenReturn() // 사용자 함수를 만든다.

return ii_open

 

여기까지 하면 부모는 준비가 되었다.

자식 Open Event에서 다음과 같이 하면 부모의 이벤트에 따라서 자식의 이벤트를 실행 합니다.

if wf_OpenReturn() = 0 then

  [자식에서 실행 할 Script]

end if

 

위와 같은 로직을 이용하여 모든 이벤트에 적용할수 있습니다.

파빌을 2-3년 정도 사용하면 DW가 많이 보족한점을 느낄것입니다.

그래서 DW를 UserObject로 만들어 사용합니다.

이때 retrieveend, updatestrart, itemchanged 등의 이벤트를 부모에 코딩합니다.

헌데 결과에 따라서 자식의 이벤트 실행 여부를 결정할때 사용하면 될듣 합니다.

 

 

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼