Comunidad Gambas-es
Algo como el Form del ide? (SOLUCIONADO) - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: Algo como el Form del ide? (SOLUCIONADO) (/thread-986.html)



Algo como el Form del ide? (SOLUCIONADO) - sushisan - 07-08-2022

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?


RE: Algo como el Form del ide? - cogier - 07-08-2022

Echa un vistazo al código adjunto. Espero que le sirva de ayuda.


RE: Algo como el Form del ide? - sushisan - 07-08-2022

Muchas gracias!

Lo voy a revisar


RE: Algo como el Form del ide? - sushisan - 08-08-2022

Se me ocurrió resolverlo de la siguiente manera:

Código:
Public Grid_Size As Integer = 1

Public Sub Form_Open()

  PanelInit(640, 1200, 10)

End

Public Sub PanelInit(height As Integer, width As Integer, gridSize As Integer)
 
  Panel1.Drop = True
  Panel1.Height = height
  Panel1.Width = width
  Panel1.Border = 2
 
  DrawingArea1.Height = height
  DrawingArea1.Width = width
 
  Grid_Size = gridSize
  Drag.icon = Picture["drop.png"]
 
End

Public Sub Label1_MouseDrag()

  Label1.Drag("")

End

Public Sub Label2_MouseDrag()

  Label2.Drag("")

End

Public Sub Panel1_DragMove()

  Drag.Source.X = (Round((Drag.X + Panel1.X) / Grid_Size)) * Grid_Size
  Drag.Source.Y = (Round((Drag.Y + Panel1.Y) / Grid_Size)) * Grid_Size
  Drag.Source.Raise

End

Public Sub DrawingArea1_Draw()

  For x As Integer = 4 To DrawingArea1.Width - 4 Step Grid_Size
    For y As Integer = 4 To DrawingArea1.Height - 4 Step Grid_Size
      Paint.Begin(DrawingArea1)
      With Paint
        .Brush = Paint.Color(Color.gray)
        .Arc(x, y, 1.0, Rad(0), Rad(360), False)
        .Fill
        .End
      End With
      Paint.end
    Next
  Next
 
End