|
안녕하세요... 원하시는 답변이 될지는...^^;
초록생선님께서는 아마도 TScrollBar 컴포넌트를 사용하시고 있으신 것 같습니다.
사실 저도 ScrollBar에서 비슷한 경험을 많이 했거든요... 한번 마우스로 스크롤 할 때마다 스크롤이 반전되어 깜박이기도 하고... 그래서 스크롤 할 때마다 다른 컴포넌트에 SetFocus() 등을 해서 포커스를 넘겨주기도 하고 그랬습니다.
그리고, 스크롤 대상의 크기가 바뀌면 그때마다 스크롤바에서의 위치, 페이지 크기등을 바꿔줘야 하지 않습니까... 이것도 생각보다 귀찮은 작업중의 하나이죠...
그런데 전혀 그럴 필요가 없습니다. TScrollBox 라는 컴포넌트가 있기 때문입니다.
저도 우연히 사용하게 되었는데, 아주 좋은 컴포넌트 임에도 불구하고 책에서는 잘 나오지 않더군요...
그냥 TScrollBox 컴포넌트를 폼에 올려두고, ScrollBox를 마치 패널 처럼, 그 위에다가 스크롤 대상이 되는 항목을 올려둡니다. 그러면 알아서 스크롤과 관계되는 모든 처리를 해줍니다.
포커스가 옮겨가고 하는 문제도 없고, 크기도 스크롤박스 안의 항목 크기에 따라서 자동으로 변합니다. 또 수평, 수직 크기에 따라서 자동으로 수평, 수직 스크롤바가 생기거나 사라지거나 합니다. (테스트도 해 봤는데, 스크롤바의 경우 키 입력이 스크롤바에 영향을 미치는데, 스크롤박스에서는 키 입력이 먹히지 않았습니다.)
이건 제 생각인데, 보통 TScrollBar를 사용하게 되면 스크롤바와 해당 대상이 잘 연결이 되지 않는 것 같습니다. 그래서 그 연결 작업을 프로그래머가 거의 완벽하게 해주어야 합니다. 그런데, TScrollBox는 해당 대상과 연결이 잘 되어 있는 것 같습니다. 프로그래머가 손을 전혀 댈 필요가 없습니다...
음...
어쨌든... 일단 한번 스크롤박스를 사용해 보시기 바랍니다...^^;
그럼... 즐넷하세요...
초록생선 님이 쓰신 글 :
: 음...포커스를 잃어버린다기 보다도...
:
: 키다운 이벤트가 스크롤바로 가지 않았으면 하는겨죠...
:
: 방향키를 사용하는 경우 스크롤바에 적용이 되는 것을 막으려면 어떻게 해야 하나요???
:
: 답변 부탁드립니다
|