Comunidad Gambas-es

Versión completa: Algo como el Form del ide? (SOLUCIONADO)
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenos días a todos.

Necesito implementar algo que se comporte como el Form en el IDE: que se pueda arrastrar "algo" (una imagen por ejemplo) y se coloque según una grilla, pero que , una vez colocado, pueda volverse a arrastrar de nuevo para reubicarlo. Intente un drag/drop sobre un Drawapanel y dibujar la imagen, lo cual funciona correctamente, pero eso no puede volver a reubicarse de la misma manera, queda fijo. Lo cual es correcto porque el nuevo dibujo no es un objeto si no un dibujo sobre el DrawPanel.

Hay algo parecido o un ejemplo de algo similar?
Echa un vistazo al código adjunto. Espero que le sirva de ayuda.
Muchas gracias!

Lo voy a revisar
Se me ocurrió resolverlo de la siguiente manera:

GAMBAS
  1. Public Grid_Size As Integer = 1
  2.  
  3. Public Sub Form_Open()
  4.  
  5.   PanelInit(640, 1200, 10)
  6.  
  7.  
  8. Public Sub PanelInit(height As Integer, width As Integer, gridSize As Integer)
  9.  
  10.   Panel1.Drop = True
  11.   Panel1.Height = height
  12.   Panel1.Width = width
  13.   Panel1.Border = 2
  14.  
  15.   DrawingArea1.Height = height
  16.   DrawingArea1.Width = width
  17.  
  18.   Grid_Size = gridSize
  19.   Drag.icon = Picture["drop.png"]
  20.  
  21.  
  22. Public Sub Label1_MouseDrag()
  23.  
  24.   Label1.Drag("")
  25.  
  26.  
  27. Public Sub Label2_MouseDrag()
  28.  
  29.   Label2.Drag("")
  30.  
  31.  
  32. Public Sub Panel1_DragMove()
  33.  
  34.   Drag.Source.X = (Round((Drag.X + Panel1.X) / Grid_Size)) * Grid_Size
  35.   Drag.Source.Y = (Round((Drag.Y + Panel1.Y) / Grid_Size)) * Grid_Size
  36.   Drag.Source.Raise
  37.  
  38.  
  39. Public Sub DrawingArea1_Draw()
  40.  
  41.   For x As Integer = 4 To DrawingArea1.Width - 4 Step Grid_Size
  42.     For y As Integer = 4 To DrawingArea1.Height - 4 Step Grid_Size
  43.       Paint.Begin(DrawingArea1)
  44.       With Paint
  45.         .Brush = Paint.Color(Color.gray)
  46.         .Arc(x, y, 1.0, Rad(0), Rad(360), False)
  47.         .Fill
  48.         .End
  49.       End With
  50.       Paint.end
  51.     Next
  52.   Next
  53.