Январь 23 2012
Перетаскивание
Здравствуйте! Сегодня мы поговорим о перемещении
Ведь на 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
Вот так вот.
С удовольствием выслушаю ваши замечания.
С уважением
Бабинович Александр
Посмотреть работы учеников можно здесь.
Другие статьи Александра в блоге.
Мы можем учить через Интернет.
|

















