Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

drag&drop

Estas en el tema de drag&drop en el foro de Visual Basic clásico en Foros del Web. Hola a todos: Necesito hacer un Drag&drop de un PictureBox. Se como se hace, pero yo quiero que al moverlo a otro sitio del Form1, ...
  #1 (permalink)  
Antiguo 28/05/2007, 14:59
 
Fecha de Ingreso: agosto-2006
Mensajes: 45
Antigüedad: 17 años, 8 meses
Puntos: 0
drag&drop

Hola a todos:
Necesito hacer un Drag&drop de un PictureBox.
Se como se hace, pero yo quiero que al moverlo a otro sitio del Form1, se quede en el sitio que donde suelte el ratón, por que si yo hago clic en el medio aproximadamente del PictureBox, luego cuando lo suelto en el Form1, lo desplaza, por que lo sitúa desde x,y del Form1 más la posición x,y del PictureBox.
He probado a capturar x,y del PictureBox, con MouseDown pero como está DragMode en automático, este evento no se produce.
Me podeis ayudar.
  #2 (permalink)  
Antiguo 28/05/2007, 16:31
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Re: drag&drop

aca tenes un ejemplo de como hacer un drag & drop de un PictureBox por el formulario,sin tener que ponerle ,ni cambiarle ninguna propiedad al picture box.

pone un picturebox en el formulario,y este codigo:

Dim iGrabX As Integer
Dim iGrabY As Integer
Dim ControlZOrder As Long

Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
Source.Move X - iGrabX, Y - iGrabY
End Sub

Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single)
Source.Move Picture1.Left + X - iGrabX, Picture1.Top + Y - iGrabY
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
iGrabX = X
iGrabY = Y
Picture1.Drag vbBeginDrag
Else
ControlZOrder = Picture1.hWnd
End If
End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
Picture1.Drag vbEndDrag
End If
End Sub

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #3 (permalink)  
Antiguo 28/05/2007, 18:04
 
Fecha de Ingreso: agosto-2006
Mensajes: 45
Antigüedad: 17 años, 8 meses
Puntos: 0
Mensaje Re: drag&drop

Gracias por tu respuesta, pero no funciona, por que al soltar el Picture1, lo desplaza fuera de las coordenadas del ratón.
Y ademas:
Private Sub Picture_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Aquí nunca entra, por lo que este sub no sirve para nada.
If Button = vbLeftButton Then
...........

Private Sub Picture_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Aquí tampoco entra nunca , por lo tanto este tampoco sirve para nada.
......
Yo creo que el problema es que si Picture1.DragMode está en Automatic, estos 2 sub nunca se cumplen. Y si se pone en Manual, si se cumplen, pero da error.
Por que ??
  #4 (permalink)  
Antiguo 29/05/2007, 03:11
 
Fecha de Ingreso: agosto-2006
Mensajes: 45
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: drag&drop

Al fin lo conseguí, es tan simple como esto.

Dim x1 As Single, y1 As Single

Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
Source.Move X - x1, Y - y1
Source.Visible = True
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
x1 = X
y1 = Y
Picture1.Drag vbBeginDrag
Picture1.Visible = False
Picture1.Drag
End If
End Sub
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:30.