https://foro.gambas-es.org/viewtopic.php?f=1&t=6053
-----------------------------------
Shell
Miercoles, 14 Diciembre 2016, 22:41

Cursor Sobre Dos Objetos A La Vez
-----------------------------------
Buenas!.

Estoy haciendo un ejemplo en el que dibujo una serie de cuadrados en un DrawingArea
La coordenada x e y de los cuadrados son generadas al azar y por ahora puede darse el caso
de que algún cuadrado pueda pisar a otro.

 [img]https://foro.gambas-es.org/files/images/768/cuadrados_1481749912_880662.png[/img]

Estos cuadrados se pueden mover, al hacer clic sobre ellos si mantenemos el botón pulsado y desplazamos el cursor del ratón.
Lo que ocurre es que al coincidir una zona común de los dos cuadrados al cursor, se seleccionan los dos cuadrados.
Eliminándose uno de ellos al hacer la acción de desplazarlo.

He creado un método como este en la propia clase Cuadrado.

[code linenumbers=false syntax=gambas]
Public Sub Lienzo_MouseDown()
  
  If Mouse.X >= Me.x And Mouse.x <= Me.x + TAMA And Mouse.y >= Me.y And Mouse.y <= Me.y + TAMA Then     
    haceclic = True
    destacar = True 
    'Test: Mostrar índice del cuadrado que se hace clic sobre el
    'Print "Has hecho clic sobre el cuadrado: " & Me.indice    
    Balloon.Info("Has hecho clic sobre el cuadrado: " & Me.indice, pantalla, Me.x, Me.y)    
  Endif
  
End
[/code]

Produce algo como esto:

 [img]https://foro.gambas-es.org/files/images/768/hicisteclic.png[/img]

Si uso el print se puede llegar a ver si se ha hecho clic en más de uno a  la vez. ( En realidad no quiero que pase esto ).
¿ Se puede crear de alguna forma una array que se añadan cada uno de los cuadrados que se ha hecho clic sobre ellos y
(ya lo más fácil), mostrarlos en la clase balloon ?

Es solo para testeo de errores.
Os subo el código para que lo probéis y opinéis que cosas creéis que son adecuadas en este ejemplo cuando tratamos la POO.
Realmente debo aprender a usar la clase Rectangle, eso cuando uso QT, pero en SDL, me tengo que inventar mi clase rectangle.

Saludos


-----------------------------------
Shell
Jueves, 15 Diciembre 2016, 09:17

Re: Cursor Sobre Dos Objetos A La Vez
-----------------------------------
Pues no, aun no. Parecía que funcionaba esto:

[code linenumbers=false syntax=gambas]
Public Sub Lienzo_MouseDown()
  
  If haceclic = False Then
    If Mouse.X >= Me.x And Mouse.x <= Me.x + TAMA And Mouse.y >= Me.y And Mouse.y <= Me.y + TAMA Then     
      haceclic = True
      destacar = True 
      
      'Test: Mostrar indice del cuadrado que se hace clic sobre el
      'Print "Has hecho clic sobre el cuadrado: " & Me.indice    
      'Balloon.Info("Has hecho clic sobre el cuadrado: " & Me.indice, pantalla, Me.x, Me.y)        
    Endif
  Endif
  
End
[/code]

Pero es que no es solo un cuadrado, son más de uno. Eso solo funcionaría con uno.
Por un momento parecía que funcionaba. Ha sido muy raro.

Continuaré viendo el problema.

Saludos


