PowerBuilder 10.5

 

 

 

  

유저오브젝트는 어플리케이션에서 자주 사용할 수 있는 프로세스를 수행하기 위해 개발자가 직접 만드는 오브젝트입니다.

유저오브젝트는 재사용이 가능하고 윈도우나 다른 유저오브젝트에서, 파워빌더 컨트롤을 사용하는 것과 동일한 방식으로 사용할 수 있습니다.

 

Custom class
Custom visual
External visual
Standard class
Standard visual

 

이렇게 5가지 유형이 있고 New 화면을 통해서 생성합니다.

 

 

Standard visual

표준 파워빌더 컨트롤로부터 시작하는 오브젝트입니다.

표준 파워빌더 컨트롤로부터 속성과 이벤트를 상속받고 어플리케이션 특성에 맞게 프로세스를 수행하도록 개발자가 수정하는 형태입니다.


스탠더드 비주얼을 사용하는 과정은 다음과 같습니다.


1. 유저오브젝트 생성

2. 유저오브젝트 코딩

3. 유저오브젝트 상속

4. 상속받은 컨트롤 코딩




여기서는 데이터윈도우 컨트롤을 유저오브젝트 형태로 만들어 보겠습니다.



pb_study2 워크스페이스를 열고 다음 소스를 생성하십시오.


타겟 : userobject

어플리케이션 오브젝트 : userobject

윈도우 오브젝트 : w_main


userobject 어플리케이션의 오픈이벤트에 다음 스크립트를 작성합니다.


open(w_main)




1. 유저오브젝트 생성


New 화면 -> PB Object -> Standard Visual을 선택합니다. 





datawindow를 선택합니다.





유저오브젝트의 기본 화면이 열립니다.







2. 유저오브젝트 코딩


clicked, ue_enter, ue_selection


세개의 이벤트를 코딩하겠습니다.



1) clicked 이벤트


Declare Instance Variables 뷰를 열고 string 타입의 변수 is_sort를 선언합니다.


string is_sort



clicked 이벤트를 열고 다음 스크립트를 작성합니다.





dw 컨트롤의 칼럼 텍스트를 클릭하면 그 칼럼의 데이터를 정렬하는 스크립입니다.

기초강의1의 43강에 포함된 내용이고 스크립트는 조금 변경했습니다.



2) ue_enter 이벤트


ue_enter 이름으로 사용자 이벤트를 생성하고

Event ID를 pbm_dwnprocessenter 로 지정한 뒤

다음 스크립트를 작성합니다.





dw 컨트롤에서 엔터키를 탭키로 전환시키는 스크립트입니다.




3) ue_selection 이벤트


us_selection 이름으로 사용자 이벤트를 생성합니다.

스크립트는 작성하지 않습니다.





유저오브젝트 이름을 uo_dw로 저장합니다.

시스템트리에 uo_dw가 보입니다.






3. 유저오브젝트 상속


w_main 을 엽니다.

컨트롤 모음창에서 Create User Object control 을 선택합니다.





uo_dw 를 선택한 뒤, w_main 레이아웃에서 빈화면을 클릭하면 dw 컨트롤이 생성됩니다.

이 컨트롤 이름은 dw_1입니다.






4. 상속받은 컨트롤 코딩


uo_dw로부터 상속받은 컨트롤 dw_1의 사용법은 표준 dw 컨트롤과 동일합니다.

이렇게 상속받으면 uo_dw에서 코딩해 놓은 부분을 바로 쓸 수 있다는 부분이 장점입니다.


dw_1의 clicked 이벤트를 엽니다.

아무런 스크립트가 없습니다.

우측 상단의 Select Ancestor/Descendant 화살표를 클릭해서 uo_dw 를 선택합니다.




그럼 uo_dw 의 clicked 이벤트에서 작성한 스크립트가 나타납니다.

여기서 수정하려고 해도 수정할 수 없고 수정하려면 uo_dw 에서 해야 합니다.


Select Ancestor/Descendant 를 w_main 으로 선택한 뒤에 스크립트를 작성할 수 있습니다.


dw_1의 clicked 이벤트에 아무렇게나 스크립트를 작성합니다. 여기서는 


string a


라고 작성합니다.


dw_1을 클릭하면 uo_dw에서 작성된 스크립트가 먼저 실행되고 난 다음 방금 작성한 스크립트가 실행됩니다.


uo_dw : Ancestor (조상)

w_main.dw_1 : Descendant (자손)


이런 관계에 있습니다.


이렇게 Ancestor 이벤트, 함수를 상속받은 Descendant에서 스크립트를 작성하는 것을 가리켜 오버라이드(override)라고 합니다.


uo_dw의 clicked 이벤트에서 작성한 스크립트를 무시하고 싶다면

먼저 clicked 이벤트의 스크립트 작성 화면에서 마우스 우클릭을 합니다.





Extend Ancestor Script 가 기본적으로 체크되어 있고 체크 해제할 수 있습니다.

그러면 어플리케이션을 실행한 뒤 dw_1을 클릭할 경우, uo_dw의 clicked 이벤트에서 작성한 스크립트가 무시되어 실행되지 않습니다.



앞서 ue_selection 이벤트를 만들어만 두고 스크립트를 작성하지 않았습니다.

이는 껍데기만 만들어두고 상속받아 스크립트를 작성하려는 의도입니다.



수고하셨습니다.









Posted by A4M
,