Usuario
como mantener tag al usar drag and drop

Pregunta
-
Buenas a todos, estoy realizando un programa y necesito hacer como una tienda. Arrastro los objetos a la cesta y despues genero un archivo con la propiedad "tag". El tema principal es que al soltar el producto en la cesta se quede guardado el "tag" donde tengo asignado una id.
Espero que me puedan ayudar,gracias de antemano.
Todas las respuestas
-
-
-
no es eso, te explico mejor. El programa tiene media pantalla con productos y despues la otra para la cesta con picturebox vacios. Con el drag drop e conseguido copiar la imagen arrastrandola y soltando el producto en los picturebox de la cesta.
por ejemplo, arrastro un ladrillo con tag 2, y lo suelto en la cesta. Luego al darle a un boton de comprar, que genere un documento txt con la id del producto que hay en la cesta.
Ahora esta mejor explicado, a ver si me puedes ayudar .
-
Ya entiendo. Realmente lo que arrastras es una imagen cuyo id entiendo que es el nombre que le has puesto a la imagen. Pues bien te digo como lo haría yo. Crea un listbox oculto y cada vez que termines el dragdrop .additem Nombre imagen. Así si el usuario, te elimina algún producto antes de la facturación, lo puedes quitar del listbox. NO se si me he explicado. Realmente el picture tiene las imágenes para el usuario, pero tu listbox tiene el archivo que indicabas al principio.Saludos
-
esto es lo que tengo del codigo. No soy muy avanzado en vb y no se comoimplementar lo que me has comentado. Te agradeceria si me lo explicaras con un ejemplo si no te molesto mucho.
gracias de antemano por tu ayuda.
-----------------------------------------
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
i1.Image = Image.FromFile("F:\foto.png")
a1.AllowDrop = Trueend sub
-----------------------------------
Private Sub i1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles i1.MouseDown
Dim pb As PictureBox = CType(sender, PictureBox)
pb.DoDragDrop(pb.Image, DragDropEffects.Copy)
End Sub-----------------------------
Private Sub a1_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles a1.DragDrop
Dim imagen As Image = CType(e.Data.GetData(DataFormats.Bitmap), Image)
a1.Image = imagen
End Sub------------------------
Private Sub a1_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles a1.DragEnter
If e.Data.GetDataPresent(DataFormats.Bitmap) Then
e.Effect = DragDropEffects.Copy
Else
e.Effect = DragDropEffects.None
End If
End Sub
- Editado Nicolas Elvira sábado, 5 de enero de 2013 16:11 remarcar
-
Debes almacenar los id en un objeto. Suelo usar en esos casos el objeto dictionary, arreglo o matriz asociativa.
un form incrustado o flotante, lee de ese objeto y coloca datos del carrito de compras:nombre,precio, cantidd,importe
Agrego: mira este sencillo y funcional programa que desarrollé en Microsoft Office Access, hace poco mas de 3 años. Las pantallas son táctiles.
En este video muestro a un usuario del foro que bien puede emplearse para un salón de belleza.
http://www.youtube.com/watch?v=XFiThAs-N_g
- Editado guarracuco sábado, 5 de enero de 2013 19:45
-
-
http://support.microsoft.com/kb/187234/es?wa=wsignin1.0
En ese enlace hay un ejemplo. Debes activar referencia a Microsoft Scripting Runtime.
- Marcado como respuesta Nicolas Elvira lunes, 7 de enero de 2013 19:30
- Desmarcado como respuesta Nicolas Elvira lunes, 7 de enero de 2013 19:46
-
Mira, he visto tu ejemplo, lo entiendo perfectamente pero estoy intentando implementarlo con el dragdrop y no hay forma. Tengo la cabeza que va a rebentar xD.
Explico nuevamente el problema especificando mejor:
- Imaginemos que tengo una picturebox con una imagen de un ladrillo.
- Arrastro el ladrillo a un picturebox vacio que hay en el apartado de carrito usando dragdrop.
- al soltar el ladrillo al carrito, que generé un "id".
- Y ya para terminar, cuando le de al boton de "generar", cree un txt con el id dentro.
lo del txt ya bsucaré como se hace, pero lo del id si necesito algo mas de ayuda y gracias a todos de antemano.
-
coloca al ladrillo propiedad index=0, y coloca un numero en la propiedad tag.
la imagen que recibirá, también. en la imagen que recibirá deseas obtener el tag y el nombre de la que arrastras hasta él.
en el evento
Private Sub recibe1_DragDrop(Index As Integer, Source As Control, X As Single, Y As Single)
en vez de usar el msgbox, lo insertas en un arreglo, que para eso te indiqué el ejemplo del dictionary.
If TypeOf Source Is Image Then
recibe1(Index).Picture = Source.Picture
msgbox(Source.Tag)'almaceno en un arreglo o matriz el tag
msgbox(Source.Name)'almaceno el nombre
End If
End Sub