Январь 23 2012

Перетаскивание

1 звезда2 звезды3 звезды4 звезды5 звезд (1 голосов, средний: 5.00 из 5)
Загрузка ... Загрузка ...

Здравствуйте! Сегодня мы поговорим о перемещении :) Ведь на Visual Basic достаточно просто сделать программу, в которой можно брать какой-то объект и перетаскивать в нужное место. Таким образом, можно сделать множество интересных программ, например,  настольный баскетбол - хватаем мячик и забрасываем его в сетку. Давайте разбираться.

Для перемещения объектов существует два события - DragDrop и DragOver. DragOver срабатывает при хватании объекта, а DragDrop при отпускании. Причем событие DragDrop нужно делать там, куда перемещается объект. Например, если мы перетаскиваем объект по форме, событие создаем обязательно Form_DragDrop (ведь отпускание объекта происходит на форме).
Для того, чтобы объект можно было перемещать, надо изменить его свойство DragMode = 1 (по умолчанию стоит 0).

Так же особое внимание стоит уделить свойству DragIcon - это картинка, которая будет отображаться при перемещении. К примеру, мы будем перемещать картинку. Если DragIcon пустое, то при перетаскивании изображение будет отображаться в рамке. Загрузив в это свойство абсолютно ту же картинку - рамки при перемещении уже не будет. А если мы в DragIcon загрузим другую картинку, то будет происходить следующее: была картинка, схватили её - она тут же изменилась на другую.

Давайте рассмотрим пример.
Создадим стандартное приложение. Добавим на форму Image1. В свойствах у Image1 в Picture загружаем картинку, в DragIcon открываем иконку (если вас не пугает рамка) и обязательно DragMode = 1.

Теперь создаем событие Form_DragDrop и и пишем код:
Image1.Left = X
Image1.Top = Y

Вот что у нас получится:

Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
Image1.Left = X
Image1.Top = Y
End Sub

А если у нас несколько картинок, как их перемещать? Очень просто! Допустим у нас три объекта: Image1, Image2, Image3. Тогда  код будет таким:

Dim предмет As Long

Private Sub Image1_DragOver(Source As Control, X As Single, Y As Single, State As Integer)
предмет = 1
End Sub

Private Sub Image2_DragOver(Source As Control, X As Single, Y As Single, State As Integer)
предмет = 2
End Sub

Private Sub Image3_DragOver(Source As Control, X As Single, Y As Single, State As Integer)
предмет = 3
End Sub

Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
If предмет = 1 Then
Image1.Left = X
Image1.Top = Y
End if
If предмет = 2 Then
Image2.Left = X
Image2.Top = Y
End if
If предмет = 3 Then
Image3.Left = X
Image3.Top = Y
End if
End Sub

Вот так вот. :) С удовольствием выслушаю ваши замечания.

С уважением

Бабинович Александр

Курс «Программирование Visual Basic»:
Посмотреть работы учеников можно здесь.
Другие статьи Александра в блоге.
Мы можем учить через Интернет.

Написать комментарий

RSS
Обучение через Интернет