Q&A

  • 드래그 & 드롭 관련입니다.
탐색기비슷한걸 만드려고 합니다.

탐색기에서 드래그 & 드롭하면 파일이 이동되잖아요~

그것처럼...  

TImage 컴포넌트에 파일이 있을때 드래그를 해서

TListBox 에 가져다 놓으면 파일이 이동하는걸 하려고 합니다.

파일 이동은 잘 되는데요...  이벤트 시점을 잡는게 문제가 되는것 같습니다.

이미지컴포넌트의

DragMode 를  dmAutomatic ,

DragKind 를 kgDrag ,

DragCursor 를 crDrag  로 했구요...

LboxListDragOver 이벤트에 파일이동부분을 넣었습니다.

그런데...   (요기서부터 문제점입니당...)

1. 파일이동부분이 두번 실행이 됩니다.  

    LboxListDragOver 가 두번 일어나는건가요?  왜그런지 잘 모르겠습니당.

2. 드래그를 하면 마우스가 드래그모양으로 생겨야 하는데

   오히려 crNodrop모양으로 바뀝니다. (디폴트에서 -> crNodrop 모양으로)


답답하기만 합니다...   아시는분 좀 가르쳐주세요~~~   ^^


3  COMMENTS
  • Profile
    박성훈 2003.01.09 04:55

    안녕하세요?
    1.DragOver는 마우스가 드래그 상태에서 마우스가 지나갈때 생깁니다.
    따라서 떨구는 동작인 DrapDrop이벤트에 파일이동 루틴을 구현하셔야 할 것 같습니다.(드래그드롭동작을 생각해보시면 이해가 되시리라 생각합니다)
    2.마우스 커서는 별도로 설정안하셔도 자동으로 변경이 됩니다.
    위같은 문제라면 DragOver이벤트의 Accept인자가 False로 설정되어 있을 때 생기는 것이라 보여집니다. Accept인자를 살펴보시죠.
  • Profile
    수서니 2003.01.09 20:00

    답변 감사합니다~. 덕분에 잘 해결되었습니다.

    DragOver  이벤트의 Accept 인자 말인데요....

    디폴트로 False 가 설정돼 있는건가요?

    DragOver  이벤트에 아무것도 안적으니 안되더니

    DragOver  이벤트에서

    Accept := True; 해주니까 마우스모양이 제대로 바뀌네요.....

    ....  Accept 의 디폴트는 False 인가요?  ........
  • Profile
    임형호 2003.01.10 03:53
    Within the OnDragOver event handler, the Accept parameter defaults to True. However, if an OnDragOver event handler is not supplied, the control rejects the dragged object, as if the Accept parameter were changed to False.

    요거 도움말에서 긁어왔는데요..원하시는답인지는 확실하지가 않네요.
    원체 영어는 제맘대로 해석해버릇해서요. 참고하세요...
    Default는 True인데..어쩌구저쩌구해서 False가 될수도 있다 그런얘기같군요..ㅋㅋㅋ