* Powerbuilder 10.5


현재 수정, 삭제, 추가, 저장 기능까지 완성했습니다. 점점 어플리케이션의 완성도가 높아지고 있구요.

계속해서 다듬어 보겠습니다.


어플리케이션을 실행해 보세요.

탭키를 계속 눌러보면 커서가 이동하는 모습이 보입니다. 그런데 순서가 뒤죽 박죽입니다.

Tab Order 냄새가 나지 않나요?

어플리케이션을 닫고 w_list 화면을 열어보세요.


그리고

메뉴 - Format - Tab Order

또는


이 아이콘을 클릭하세요


 



dw 와 같은 모양으로 탭오더를 입력할 수 있는 화면으로 변경되었네요. 방법은 dw 와 동일합니다.

여기서는 커맨드 버튼을 탭을 이동해서 선택할 경우가 없으므로 모두 0 으로 둡니다.

그럼 프로그램이 시작하자마자 dw_emp 로 커서가 가겠죠?

실행해서 확인해 보세요.




포커스가 dw 의 사원명 칼럼으로 바로 간 모습이 보입니다.

dw 포커스 삼종세트 기억나시죠?

SetFocus
ScrollToRow
SetColumn

다른 오브젝트의 탭오더는 0으로 두고 dw 의 탭오더는 0보다 크게 입력한 뒤에 프로그램을 실행하면 다음과 같은 효과를 볼 수 있습니다.

dw.SetFocus()
dw.ScrollToRow(1)
dw.SetColumn(x)


x 는 dw 내에서 탭오더가 0보다 크게 입력된 칼럼중 순서가 가장 빠른 칼럼.
순서란 Column Specification 에서의 순서. DataSource 에서 작성된 칼럼의 순서와 일치.



그래서 프로그램을 실행하면 dw 의 사원명 칼럼으로 포커스가 이동하는 것이죠.

그리고 포커스가 가서 커서가 깜빡이는 것이 보이는데요. 선택반전 되면 좋을 것 같습니다.

프로그램이 실행되면 바로 dw 에서 커서가 위치한 로우가 선택반전되게 하겠습니다.

프로그램이 실행되면 -> w_list 의 open 이벤트
바로 dw 에서 커서가 위치한 로우가 선택반전되게 -> SelectRow







요렇게 작성했어요.




샐행해 보면...

 


이렇게 됩니다.

이 때 아래방향 화살표 키를 눌러보세요.

그럼 커서만 이동하고 선택반전은 첫번째 로우에 머물러 있습니다.

커서가 이동할 때 이동한 로우가 선택반전 되면 좋겠는데요.


프로그램이 실행되자마자 첫번째 로우가 선택반전되고 커서를 로우 단위로 이동해서 선택반전되는 기능을 한번에 구현할 수 있는 방법이 있습니다.


방금 w_list 의 open 이벤트에 작성한 거는 삭제합니다.


그리고 dw_emp 의 rowfocuschanged 이벤트로 이동합니다.



RowFocusChanged event (DataWindows)
 - dw 에서 current row가 변경할 때 발생한다.

current row 란 포커스가 위치한 row 를 뜻합니다. 즉, 포커스를 로우 단위로 이동시켰을 때 발생하는 이벤트입니다.

예를 들어 위방향 또는 아래방향 화살표 키를 누를 때 발생합니다.

rowfocuschanged (long currentrow) returns long [pbm_dwnrowchange]

에서 currentrow 인수는 포커스를 이동하고난 후에 포커스가 위치한 로우를 뜻합니다.




요렇게 작성하면 currentrow 가 반전되겠죠?



실행해서 확인하세요.

프로그램이 시작하자 마자 dw 의 첫번째 로우가 반전됩니다.

이는 프로그램이 실행되고 처음에는 dw 에 포커스가 없다가 dw 에 포커스가 자동으로 이동하면서 rowfocuschanged 이벤트가 실행됐기 때문입니다.

이렇게 포커스가 없던 dw 에 포커스를 주면 rowfocuschanged 이벤트가 발생합니다.


수고하셨습니다.


* 질문은 댓글에...

 

Posted by A4M
,