Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11639
Последний выпуск: 19.06.2015

Drag & Drop в Visual Basic

Гайдар Магдануров, VBStreets

Любимым занятием пользователей 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.

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
Аноним
Мне нравитсяМне не нравится
11 мая 2005, 17:06:41
Это потому, что нужно так:
Set Image1.DragIcon = Image1.Picture
2.
Аноним
+1 / -0
Мне нравитсяМне не нравится
9 апреля 2005, 18:44:26
Мой Визуал Бесик не хочет выполнять
Image1.DragIcon = Image1.Picture
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог