Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Averiguar Coordenadas Cuando Hacemos Una Operación Drag
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Averiguar Coordenadas Cuando Hacemos Una Operación Drag 
 
Hola!.

Hice este ejemplo:

 rejilladrop

Tengo unos picturebox a la derecha,los "atrapo"..   y los llevo sobre el DrawingArea.
Los suelto para que se dibujen dentro de la rejilla.

Ahora bien. ¿ Como se puede saber constantemente a la vez que desplazo el picturebox su coordenada x e y ?.
No vale mouse.x y mouse.y aperentemente..   Sobre todo cuando hago una operación de arrastre.
Algo falta.

Cuando suelto es fácil averiguar mediante dentro del evento Drag_Drop, usando Drag.X y Drag.Y..pero solo cuando
suelto, ojo.

Aquí tenéis el código fuente. Ah, imaginar lo que significa esta posibilidad para crear mapas para un juego de tablero.

Saludos

RejillaDrop.tar.gz
Descripción:  
Descargar
Nombre del archivo: RejillaDrop.tar.gz
Tamaño: 6.76 KB
Descargado: 59 veces
RejillaDrop.tar.gz
Descripción:  
Descargar
Nombre del archivo: RejillaDrop.tar.gz
Tamaño: 6.76 KB
Descargado: 59 veces
RejillaDrop.tar.gz
Descripción:  
Descargar
Nombre del archivo: RejillaDrop.tar.gz
Tamaño: 6.76 KB
Descargado: 59 veces

 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Martes, 28 May 2013, 18:51; editado 2 veces 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Averiguar Coordenadas Cuando Hacemos Una Operación Drag 
 
Buena pregunta...

Añadiendo esto a tu código tampoco funciona (Hay que poner la propiedad Tracking = True del drawingarea). Sí funciona siempre que el mouse esté encima del Drawingarea, y pulses y arrastres sin salirte de él, pero eso no es lo que queremos.

Public Sub DrwPizarra_MouseMove()

  lblX.Text = Mouse.X
  lblY.Text = Mouse.Y

End


Parece que cuando entras desde fuera hacia el drawing area con algún botón pulsado, no detecta que estás encima hasta que sueltas el botón del mouse. Creo que no es un problema de gambas, sino un comportamiento normal del sistema operativo, porque pasa siempre en cualquier aplicación aunque no sea gambas.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Averiguar Coordenadas Cuando Hacemos Una Operación Drag 
 
Jesús:

je, se podría poner varios componentes su propiedad Tracking a True.  
Pero no vale.

Entonces es algo que debe ocurrir con la operación del arrastre. Quien sabe a lo mejor creando una clase.  

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Averiguar Coordenadas Cuando Hacemos Una Operación Drag 
 
No soluciona el problema pero mejora el código:

Hay que sustituir esto:

Public Sub DrwPizarra_Drop()
  
  Dim x As Float
  Dim y As Float
  Dim x0 As Float
  Dim y0 As Float
  Dim x1 As Float
  Dim y1 As Float
  Dim situoX As Integer
  Dim situoY As Integer
  Dim pimagen As Picture
  
  If Drag.Type = Drag.Image Then          
    pimagen = Drag.Icon
    
    x = Drag.X
    y = Drag.Y  
    x0 = x / celda
    y0 = y / celda
    
    situoX = Int(x0)
    situoY = Int(y0)
    
    x1 = celda
    y1 = celda
    
    x0 = situoX * x1
    y0 = situoY * y1
    
    Draw.Begin(DrwPizarra)  
      Draw.Image(pimagen.Image, x0, y0)    
    Draw.End
    
  Endif
  
End
 


Por esto:

Public Sub DrwPizarra_Drop()
    
  Dim x As Integer
  Dim y As Integer  
  Dim pimagen As Picture
  
  If Drag.Type = Drag.Image Then          
    pimagen = Drag.Icon
        
    x = Int(Drag.x / celda) * celda  
    y = Int(Drag.y / celda) * celda
    
        
    Draw.Begin(DrwPizarra)  
      Draw.Image(pimagen.Image, x, y)    
    Draw.End
    
  Endif
  
End
 


Estuve jugando a cambiar la función Int por Round, pero hace un efecto extraño, queda a veces por debajo
donde hemos hecho la operación de soltar.

El código anterior funciona, pero sobran variables. Es lo típico cuando se hace una cosa la primera vez.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Averiguar Coordenadas Cuando Hacemos Una Operación Drag 
 
Apurando aún 6 caracteres menos, usando el operador de división entera:

x = (Drag.x \ celda) * celda
y = (Drag.y \ celda) * celda

 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Averiguar Coordenadas Cuando Hacemos Una Operación Drag 
 
Jesús:



Así es la optimización de un código. Es que no nos damos cuenta.  
Mas bien es que a veces somos comodones, como funciona...

Voy a modificar el código. Me enrolle con Round y no pensé en la división entera.

Gracias.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Eje De Coordenadas Cuando Dibujamos En Gambas Shell General 4 Sabado, 28 Junio 2014, 13:40 Ver último mensaje
jsbsan
No hay nuevos mensajes Diferencias Entre Gb.gui Y Gb.qt. Coordenadas Shell General 2 Domingo, 30 Octobre 2016, 10:53 Ver último mensaje
Shell
No hay nuevos mensajes Drag Drop, Drag Source, Tag Shell General 0 Domingo, 08 Octobre 2017, 11:28 Ver último mensaje
Shell
No hay nuevos mensajes Saber Cuando Hacemos Click En El Header Pe... gambafeliz General 0 Sabado, 20 Junio 2020, 21:32 Ver último mensaje
gambafeliz
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron