말씀하신 방법대로 구현하시면 될 것 같습니다.
1. 타이머에서 Interval을 지정하고 (약 500ms 가 적당하다고 생각합니다) 아래 작업을 지정
2. OnDragOver에서 현재 위치하고 있는 곳을 알아낸 뒤, 맨 위나 맨 아래에 있으면 아래 작업을 시도
3. SendMessage를 이용해서 WM_VSCROLL을 보내거나, TopItem 프로퍼티를 변경하여 위치를 바꿈
제가 코드는 StringGrid로 한 것 밖에 없어서 올려드리지를 못했네요. 만약 그거라도 원하신다면 올려드리겠습니다.
skjoon 님이 쓰신 글 :
: 트리뷰에서 노드를 드래그 할때, 트리뷰의 맨 위나 맨 밑에 드래그 아이템이 위치하면.. 윈도 탐색기처럼 자동으로 한 줄씩 스크롤을 시키려고 합니다.
:
: 타이머를 이용해서 WM_VSCROLL 메시지를 보내서 구현을 한다고 했는데요..
: 영 엉성합니다..
:
: 코드구루에서 찾아보니( http://www.codeguru.com/treeview/scroll_drag_drop.shtml) MFC에서는 SelectDropTarget(HTREEITEM )이라는 함수를 사용해서 스크롤을 한 다음에 다음 아이템으로 드래그 타겟을 새로 설정해 주는 것 같은데.. 빌더에서는 그런 함수를 쓸수 없는지 모르겠네요..
:
: 방법을 아시는 분 도움 부탁드립니다..
|