Drag & Drop в Visual Basic
Любимым занятием пользователей Windows является Drag & Drop, так почему же не украсить свои приложения красиво перетаскиваемыми объектами.
Для простого примера создайте форму, разместите на ней картинку Image1 и добавьте следующий код:
Private Sub Form_Load() ' При перетаскивании картинки, курсор становиться этой картинкой Image1.DragIcon = Image1.Picture End Sub Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) ' Перетаскивание можно осуществлять нажав любую кнопку, хоть третью если есть. Image1.Drag vbBeginDrag ' Так эффект лучше смотрится, словно картинку взяли и унесли. Image1.Visible = False End Sub Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single) Image1.Move X, Y ' Мы перемещаем иконку туда, где отпустили кнопку, на форме. Image1.Visible = True ' Ну и делаем видимой картинку End Sub
Вот такой простенький пример.
Поместите на форме PictureBox, названый Picture1, еще две картинки, одну назовите Yes, а другую No. Теперь присвойте картинке yes - иконку, которая показывает, что сюда объект поместить можно, а в No, что сюда объект помещать нельзя.
Теперь модифицируем имеющийся код, да и добавим немного.
Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single) Image1.Move X, Y Image1.Visible = True End Sub Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Image1.Drag vbBeginDrag Image1.Visible = False End Sub
Оставили события DragOver формы и MouseDown картинки нетронутыми.
Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single) 'Если отпустить картинку над Picture1, то она просто ' появиться так, где и была до Drag-а Image1.Visible = True End Sub Private Sub Image1_DragOver(Source As Control, X As Single, Y As Single, State As Integer) Select Case State Case vbEnter Image1.DragIcon = yes.Picture Case vbLeave Image1.DragIcon = no.Picture End Select End Sub Private Sub Picture1_DragOver(Source As Control, X As Single, Y As Single, State As Integer) Select Case State Case vbEnter Image1.DragIcon = yes.Picture Case vbLeave Image1.DragIcon = no.Picture End Select End Sub
Объясняю: vbEnter - означает, что объект находится над приемником, а vbLeave, что ушел с приемника. В событии Picture1, я вовсе не ошибся, там написано то же самое, что и в Image1, т.к. приемником является форма.
Ну все. Удачи с Drag & Drop.
Оставить комментарий
Комментарии
Set Image1.DragIcon = Image1.Picture
Image1.DragIcon = Image1.Picture