본문 바로가기

관심꺼리.log/정신노동.dat

파워빌더 화면 리사이즈 Tip

파워빌더의 기본 컴포넌트는 화면 크기에 따라 자동으로 리사이즈되는 기능이 없다. 그래서 여기저기 뒤지다가, 파워빌더 Code Exchange(https://powerbuilder.codexchange.sybase.com/ 로그인 필요)에서 resize.pbl이라는 샘플을 얻을 수 있었다.

그런데 한가지 문제는  DataWindow의 컬럼의 리사이즈를 단지 Zoom속성으로 처리 했다는 것이다.
그러면 화면이 이렇게 된다.

Resize - OLD 화면 리사이즈 전

Resize - OLD 화면 리사이즈 전

Resize - OLD 화면 리사이즈 후

Resize - OLD 화면 리사이즈 후

Page1탭의 DataWindow의 타이틀을 보면 ZoomIn이되서 폰트가 커져버렸다. 이건 좌절 ㅜㅜ
다른 컴포넌트들은 잘 리사이징 되어서 이 소스를 수정해서 컬럼 사이즈도 리사이즈 되게 했다.

Resize - NEW 화면 리사이즈 전

Resize - NEW 화면 리사이즈 후

Resize - NEW 화면 리사이즈 후

Resize - NEW 화면 리사이즈 후


Page1탭의 DataWindow의 컬럼사이즈도 잘 리사이징되는 걸 볼수 있다.

소스는 첨부된 resize.zip파일로 올렸다.
모든 기능은 uo_resize 오브젝트가 처리한다.

윈도우 오브젝트의 open이벤트에 다음과 같이 작성해 준다.

iuo_resize = CREATE uo_resize
iuo_resize.of_setTag(This)
 
그리고  resize이벤트에는 다음과 같이 작성해 준다.

iuo_resize.of_doResize(This)

이러면 끝!

of_setTag 함수로 Tag 속성에 화면 대비 컴포넌트의 X, Y, Height, Width 비율을 설정해 두었다가, of_doResize함수에서 그비율을 화면크기랑 곱해서 각 컴포넌트의 사이즈를 결정하도록 하고 있다. 말로 설명한게 이해가 잘 안가면 uo_resize오브젝트를 뚤어져라 분석하면... (후다닥~!)

첨부한 샘플은 10.5버젼이다. new uo_resize 폴더에 있는 두개의 Export받은 오브젝트들은 새로운 uo_resize용이고 기존 소스샘플은 파워빌더 Code Exchange를 참고 하시길 바랍니다.

invalid-file

파워빌더 화면 Resize Sample: resize.zip