InfoCity
InfoCity - виртуальный город компьютерной документации
Реклама на сайте







Размещение сквозной ссылки

 

Drag & Drop в VB


Гайдар Магдануров, 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)
Image1.Visible = True 'Если отпустить картинку над Picture1, то она просто появиться так, где и была до Drag-а
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.


Реклама на InfoCity

Яндекс цитирования



Финансы: форекс для тебя








1999-2009 © InfoCity.kiev.ua