Подскажите, плиз.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Druid-2004
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.08.2004 (Вс) 16:20
Откуда: Трехгорный

Подскажите, плиз.

Сообщение Druid-2004 » 08.08.2004 (Вс) 16:32

Есть форма. На ней размещена картинка. Как сделать так, чтобы эту картинку можно было бы таскать по форме, цепляя ее мышкой, но так, чтобы при перетаскивании, картинка не превращалась в рамку, а чтобы ее было видно при перетаскивании. :roll:

Заранее, очень благодарен за помощь.
... Буду благодарен за пример.
С уважением, Druid

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 08.08.2004 (Вс) 16:59

Код: Выделить всё
Option Explicit

Private InMotion As Boolean, pX As Long, pY As Long

Private Sub Form_Load()
  Picture1.Picture = LoadPicture("D:\Dist\!wallpaper\Wallpaper\Ïîëåò.jpg")
  Picture1.ScaleMode = vbPixels
  Me.ScaleMode = vbPixels
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = vbLeftButton Then InMotion = True: pX = X: pY = Y
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If InMotion Then Picture1.Move Picture1.Left + X - pX, Picture1.Top + Y - pY
End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  InMotion = False
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 08.08.2004 (Вс) 17:07

У меня проще ;-)
Код: Выделить всё
Option Explicit
Dim dx As Single, dy As Single

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If (Button And vbLeftButton) Then dx = X: dy = Y
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If (Button And vbLeftButton) Then Picture1.Move Picture1.Left + X - dx, Picture1.Top + Y - dy
End Sub


Что самое интересное, набирал я это одновременно с тобой. Захотел послать, смотрю - а ты уже своё послал :-D

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 08.08.2004 (Вс) 17:19

Зато у меня быстрее работает, поскольку каждый раз проверяется значение одной переменной (раз), а вычисления не single, а long (два) :wink:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Druid-2004
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.08.2004 (Вс) 16:20
Откуда: Трехгорный

Сообщение Druid-2004 » 08.08.2004 (Вс) 18:58

Пасиба, большое... прям не знаю, как благадарить.. ;)
С уважением, Druid

Egor_moscow
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 31.07.2004 (Сб) 5:15

Сообщение Egor_moscow » 13.08.2004 (Пт) 4:13

А можно было и через апи реализовать.......

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.08.2004 (Пт) 7:59

А зачем? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Egor_moscow
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 31.07.2004 (Сб) 5:15

Сообщение Egor_moscow » 14.08.2004 (Сб) 1:50

ну не знаю по мне так лучше будет тем более что там всего-то 3 строчки


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: The trick, Yandex-бот и гости: 9

    TopList