VB - DragDrop 이벤트와 DragOver 이벤트

평소에 사용할 때는 굉장히 간단히 그리고 편하게 사용하는 Drag & Drop 기능 이지만 비주얼 베이직에서 구현하면서 꽤나 고생을 했다 - 무식이 죄다. 다음 내용은 이를 비주얼 베이직에서 구현하는 것을 정리한 내용이다.

증권사 HTS를 사용해 본 사람이라면 알겠지만, 이 드래그앤드랍이벤트가 매우 유용하게 사용 된다. 예를 들어 현재창의 주식 코드를 드래그해 차트 창 위에 떨어트리면 차트창의 차트가 해당 주식코드를 기본으로 구성 되는 것이 바로 이 이벤트를 이용한 것이다.

우선 드래그앤드랍 이벤트를 활성화 시키기 위해서는 실제로 드래그가 일어나 도록 해야한다. 예를 들어 텍스트박스를 그냥 드래그 해보면 오브젝트 안의 내용만 하이라이트 될뿐 실제 드래그 되지는 않는다. 드래그를 활성화 시키기 위해서는 다음과 같이 코딩한다.




Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)

If Button = 1 Then

Text1.Drag

End If

End Sub




위 코드는 Text1 박스를 드래그 시키기 위한 내용이다. 우선 Text1에 마우스 버튼이 눌러 졌을 때, 그 버튼이 마우스 왼쪽 버튼이라면, Text1이라는 이름을 가진 오브젝트를 잡아서 끌기 시작하는 것이다.

다음은 실제 드래그가 일어나면서 다른 명령어를 실행 시킬 차례이다.



Private Sub Form_DragDrop(source As Control, x As Single, y As Single)

Form1.setfocus

End Sub


이와 같은 코딩이나 혹은


Private Sub Form_DragOver(source As Control, x As Single, y As Single, State As Integer)


Form1.setfocus


End Sub



이렇게 코딩 할 수 있다.

위 코드를 살펴보면 DragDrop 이벤트 혹은 DragOver 이벤트 발생시 Form1이 포커스를 가질 수 있도록 - 다시 말해 Form1 창이 활성화 되도록 - 만드는 코드이다.
여기서 주의 할 점은 DragDrop 이벤트와 DragOver 이벤트의 차이점이다.
DragDrop 이벤트는 드래그 후에 드래그 했던 오브젝트를 Form1에 Drop 했을 때 - 다시 말해 드래그 후에 Form1 위에서 마우스 버튼을 놓았을 때 - 이벤트가 발생하고, DragOver 이벤트는 드래그 해서 Form1 위에서 마우스 버튼을 놓지 않고 움직일 때 발생한다.
앞에서도 말했지만 Drag 이벤트를 활성화 시키지 않으면 - 위 코드에서 Text1.Drag 라고 코딩 하지 않으면 - DragDrop 이벤트와 DragOver 이벤트는 무용지물이다. 따라서 반드시 드래그앤드랍 이벤트를 활성화 시키기 위해 Drag 코드를 넣어 줘야 함을 잊지 말자.

댓글 없음:

댓글 쓰기