https://foro.gambas-es.org/viewtopic.php?f=1&t=8118
-----------------------------------
calcena
Martes, 23 Junio 2020, 21:05

[Solucionado] Ver Texto Al Posicionarse Con El Ratón Encima De Celda
-----------------------------------
Buenas, es posible que al pasar por encima de una celda de un control GridView, en concreto sin pulsar (hacer click) se lance un evento y poder sacar información de esa celda mediante el ID que se almacena en la primera columna.
El estilo vendría a ser lo que en web html sería el componente tooltip.

Saludos.


-----------------------------------
vuott
Martes, 23 Junio 2020, 22:14

Re: Ver Texto Al Posicionarse Con El Ratón Encima De Celda
-----------------------------------
[quote user="calcena" post="48918"]... de esa celda mediante el ID que se almacena en la primera columna.[/quote]
No he comprendido bien.   :|


-----------------------------------
alessandri
Miercoles, 24 Junio 2020, 03:13

Re: Ver Texto Al Posicionarse Con El Ratón Encima De Celda
-----------------------------------
Hola hermano.
Muy interesante el caso. Estuve intentando con el evento mousmove y no tuve éxito :? .
Voy a intentarlo de nuevo porque yo también necesito esa solución. cualquier cosa le avisare.

Saludos.


-----------------------------------
gambafeliz
Miercoles, 24 Junio 2020, 09:12

Re: Ver Texto Al Posicionarse Con El Ratón Encima De Celda
-----------------------------------
Se hace con toda seguridad con el evento MouseMove, este nos va a dar la posición del Mouse en todo momento, a continuación debes pintar dos label para ver la posición X e Y de la celda, por otra parte debes pintar ScreenX, ScreenY del GridView así como Mouse.ScreenX, Mouse.ScreenY, de esta forma comprenderás que GridView y Mouse coinciden numericamente, ahora solo te queda hacer rangos de celdas con la posición de Mouse. Esto lo haces recorriendo las filas y las columnas para obtener su posición y así comparar con el mouse, para después obtener el Text de la celda.

Esto es muy bonito explicado pero hay que hacerlo, yo voy por la mitad de lo que he contado. Y lo estoy haciendo solo para vosotros jugadores :)

A ver si lo termino y os paso el código.

Saludos.


-----------------------------------
calcena
Miercoles, 24 Junio 2020, 12:39

Re: Ver Texto Al Posicionarse Con El Ratón Encima De Celda
-----------------------------------
[quote user="gambafeliz" post="48922"]Se hace con toda seguridad con el evento MouseMove, este nos va a dar la posición del Mouse en todo momento, a continuación debes pintar dos label para ver la posición X e Y de la celda, por otra parte debes pintar ScreenX, ScreenY del GridView así como Mouse.ScreenX, Mouse.ScreenY, de esta forma comprenderás que GridView y Mouse coinciden numericamente, ahora solo te queda hacer rangos de celdas con la posición de Mouse. Esto lo haces recorriendo las filas y las columnas para obtener su posición y así comparar con el mouse, para después obtener el Text de la celda.

Esto es muy bonito explicado pero hay que hacerlo, yo voy por la mitad de lo que he contado. Y lo estoy haciendo solo para vosotros jugadores :)

A ver si lo termino y os paso el código.

Saludos.[/quote]

Muchas gracias, tal como lo explicas tiene muy buena pinta.
Mi explicación para VUOTT ya que no se si expliqué bien mis intenciones:
Situación:
1- tenemos un gridview con una columa ID oculta que nos da el identificador de Base de datos para poder hacer el CRUD típico y normal.
2- cuando movemos el ratón por encima de las celdas, en html5 (aplicación web php) al posicionarte encima de un elemento, texto, imagen puedes llegar a construir un tooltip (titulito que aparece emergente al posicionarte encima de algo), ese tooltip puede enseñarte información interesante pero no vital sobre algún dato.
3- He visto que en el gridview existe el evento gridView_mousemove, pero es para lanzar el evento en cualquier parte, sin concretar en la posición exacta de la celda.
Dicho esto la idea sería que como cada celda tiene una información y unos iconos diferentes obtenidos desde la DB por el resultado, sería interesante que, al posicionarse encima (sin pulsar click) de un elemento apareciera un cartelito, tooltip, label...etc con un dato que queramos informar.

La posible vía que estoy mirando es que dinámicamente se construya la label de cada fila y obtener lo que dice GAMBAFELIZ para obtener las coordenadas x - y de cada celda.

Saludos muchas gracias.


-----------------------------------
gambafeliz
Miercoles, 24 Junio 2020, 14:47

Re: Ver Texto Al Posicionarse Con El Ratón Encima De Celda
-----------------------------------
Este es el código sin pulir sin invertigar las columnas a fondo pero que funciona perfecto:

Explico el ejemplo, se trata de un GridView1 con 6 filas y 2 columnas en un formulario.

[code]
Public Sub GridView1_MouseMove()

   Dim iCW0, iCW1 As Integer

   ' Ejemplo para dos columnas, 0 y 1
   iCW0 = GridView1[0, 0].W ' variable integer para recuperar el ancho de la columna (C=Columan, W=Ancho) en fila 0
   iCW1 = GridView1[0, 1].W ' variable integer para recuperar el ancho de la columna (C=Columan, W=Ancho) en fila 1

   ' Los Bordes númericos y del header = 20px, para este ejemplo.
   Label1.Text = Int((Mouse.ScreenY - GridView1.ScreenY) / 20) - 1 ' [-1] es para obtener Row

   ' Comparo la coordenada del mouse con:
   ' 1.Posición donde esta el GridView1 + 20px del borde donde esta numerada la fila
   ' 2.Posición donde esta el GridView1 + 20px del borde donde esta numerada la fila + Ancho de la columna 0 
   If Mouse.ScreenX > (GridView1.ScreenX + 20) And Mouse.ScreenX < (GridView1.ScreenX + 20 + iCW0) Then
      Label2.Text = 0
   Else
      Label2.Text = 1
   Endif

   ' Ya tenemos la fila y la columna mapeada ahora solo queda poner la información
   If CInt(Label1.Text) > -1 And CInt(Label1.Text) < 6 Then
      Label3.Text = GridView1[CInt(Label1.Text), CInt(Label2.Text)].Text
   Endif
   
End
[/code]

Espero que lo entendáis bien, sino por favor pregunten sin ningún problema, cuando lo mejore lo añadiré.

Saludos


-----------------------------------
calcena
Miercoles, 24 Junio 2020, 18:23

Re: Ver Texto Al Posicionarse Con El Ratón Encima De Celda
-----------------------------------
[quote user="gambafeliz" post="48926"]Este es el código sin pulir sin invertigar las columnas a fondo pero que funciona perfecto:

Explico el ejemplo, se trata de un GridView1 con 6 filas y 2 columnas en un formulario.

[code]
Public Sub GridView1_MouseMove()

   Dim iCW0, iCW1 As Integer

   ' Ejemplo para dos columnas, 0 y 1
   iCW0 = GridView1[0, 0].W ' variable integer para recuperar el ancho de la columna (C=Columan, W=Ancho) en fila 0
   iCW1 = GridView1[0, 1].W ' variable integer para recuperar el ancho de la columna (C=Columan, W=Ancho) en fila 1

   ' Los Bordes númericos y del header = 20px, para este ejemplo.
   Label1.Text = Int((Mouse.ScreenY - GridView1.ScreenY) / 20) - 1 ' [-1] es para obtener Row

   ' Comparo la coordenada del mouse con:
   ' 1.Posición donde esta el GridView1 + 20px del borde donde esta numerada la fila
   ' 2.Posición donde esta el GridView1 + 20px del borde donde esta numerada la fila + Ancho de la columna 0 
   If Mouse.ScreenX > (GridView1.ScreenX + 20) And Mouse.ScreenX < (GridView1.ScreenX + 20 + iCW0) Then
      Label2.Text = 0
   Else
      Label2.Text = 1
   Endif

   ' Ya tenemos la fila y la columna mapeada ahora solo queda poner la información
   If CInt(Label1.Text) > -1 And CInt(Label1.Text) < 6 Then
      Label3.Text = GridView1[CInt(Label1.Text), CInt(Label2.Text)].Text
   Endif
   
End
[/code]

Espero que lo entendáis bien, sino por favor pregunten sin ningún problema, cuando lo mejore lo añadiré.

Saludos[/quote]

Buenas, la ejecución perfecta, solo tiene un fallo y es el tema de gestionar el scroll, no se lleva muy fino con registros que ocupan de lo visualizable.
He copiado el ejemplo para pasarlo a mi desarrollo y se visualizan 17 registros, aquí funciona correctamente, pero en realidad en la tabla hay 21, cuando realizo el scroll para poder ver los inferiores, ya el sistema se pierde como es normal.

Saludos.


-----------------------------------
gambafeliz
Miercoles, 24 Junio 2020, 18:35

Re: Ver Texto Al Posicionarse Con El Ratón Encima De Celda
-----------------------------------
[quote user="calcena" post="48928"]

Buenas, la ejecución perfecta, solo tiene un fallo y es el tema de gestionar el scroll, no se lleva muy fino con registros que ocupan de lo visualizable.
He copiado el ejemplo para pasarlo a mi desarrollo y se visualizan 17 registros, aquí funciona correctamente, pero en realidad en la tabla hay 21, cuando realizo el scroll para poder ver los inferiores, ya el sistema se pierde como es normal.

Saludos.[/quote]

Pues, seguro que tienes razón, es un esbozo, churretoso que estoy probando, ahora estoy mejorandolo, la parte de las columnas y perfeccionando todo lo que tu dices por que pretendo hacer algo para mi programa. Y si yo he detectado algún problema sin importancia también, como que cuando poner el puntero sobre los números de fila te dice la columna 2, pero bueno como es una prueba que lo que he querido es pasarla para que la mejoréis cada cual a su gusto pues, en fin, no esta mal :) 

Saludos, joven.


-----------------------------------
vuott
Miercoles, 24 Junio 2020, 20:01

Re: Ver Texto Al Posicionarse Con El Ratón Encima De Celda
-----------------------------------
Como exemplo [u]general[/u] y simple, yo propondria este codigo:  :| 

[code linenumbers=false syntax=gambas]Public Sub Form_Open()

  Dim c, r As Byte

  With GridView1
    .Columns.Count = 2
    .Rows.Count = 6
    .Tracking = True
  End With
  
' Escribimos cualquier texto en cada celda:
  For c = 0 To GridView1.Columns.Max
    For r = 0 To GridView1.Rows.Max
      GridView1[r, c].Text = CStr(c) & "," & CStr(r)
    Next
  Next
 
End


Public Sub GridView1_MouseMove()
  
  GridView1.Tooltip = Null
  
  If (GridView1.RowAt(Mouse.Y) > -1) And (GridView1.ColumnAt(Mouse.X) > -1) Then
    GridView1.Tooltip = "<Font Color=red>" & GridView1[GridView1.RowAt(Mouse.Y), GridView1.ColumnAt(Mouse.X)].Text
  Endif
  
End[/code]


-----------------------------------
gambafeliz
Jueves, 25 Junio 2020, 08:09

Re: Ver Texto Al Posicionarse Con El Ratón Encima De Celda
-----------------------------------
[quote user="vuott" post="48933"]Como exemplo [u]general[/u] y simple, yo propondria este codigo:  :| 
[/quote]

Pues vuott para mi más que perfecto, muchas gracias :)


-----------------------------------
calcena
Jueves, 25 Junio 2020, 15:16

Re: Ver Texto Al Posicionarse Con El Ratón Encima De Celda
-----------------------------------
[quote user="vuott" post="48933"]Como exemplo [u]general[/u] y simple, yo propondria este codigo:  :| 

[code linenumbers=false syntax=gambas]Public Sub Form_Open()

  Dim c, r As Byte

  With GridView1
    .Columns.Count = 2
    .Rows.Count = 6
    .Tracking = True
  End With
  
' Escribimos cualquier texto en cada celda:
  For c = 0 To GridView1.Columns.Max
    For r = 0 To GridView1.Rows.Max
      GridView1[r, c].Text = CStr(c) & "," & CStr(r)
    Next
  Next
 
End


Public Sub GridView1_MouseMove()
  
  GridView1.Tooltip = Null
  
  If (GridView1.RowAt(Mouse.Y) > -1) And (GridView1.ColumnAt(Mouse.X) > -1) Then
    GridView1.Tooltip = "<Font>" & GridView1[GridView1.RowAt(Mouse.Y), GridView1.ColumnAt(Mouse.X)].Text
  Endif
  
End[/code][/quote]




Vuott simplemente PERFECTO justamente lo que necesitamos todos creo. 

Muchas gracias a los dos por vuestros códigos.


-----------------------------------
gambafeliz
Jueves, 25 Junio 2020, 17:43

Re: Ver Texto Al Posicionarse Con El Ratón Encima De Celda
-----------------------------------
[quote user="calcena" post="48938"]
Vuott simplemente PERFECTO justamente lo que necesitamos todos creo. 

Muchas gracias a los dos por vuestros códigos.[/quote]

Pues sí, estoy contigo, joven :)

Yo lo he intentado humildemente, pero este vuott, es la caña, si que sabe de Gambas, su código es simple, chulo y funciona de maravilla. Bueno lo importante es el espíritu de todos para ayudar y salir del paso.

Genial !!!

Seguiremos en otra aventura, Aaadios.


-----------------------------------
calcena
Jueves, 25 Junio 2020, 20:50

Re: Ver Texto Al Posicionarse Con El Ratón Encima De Celda
-----------------------------------
[quote user="gambafeliz" post="48940"][quote user="calcena" post="48938"]
Vuott simplemente PERFECTO justamente lo que necesitamos todos creo. 

Muchas gracias a los dos por vuestros códigos.[/quote]

Pues sí, estoy contigo, joven :)

Yo lo he intentado humildemente, pero este vuott, es la caña, si que sabe de Gambas, su código es simple, chulo y funciona de maravilla. Bueno lo importante es el espíritu de todos para ayudar y salir del paso.

Genial !!!

Seguiremos en otra aventura, Aaadios.[/quote]

Hombre la verdad que tu aproximación es muy buena, no hay que desprestigiar ni las formas ni el esfuerzo.

Así que por mi parte solo agradecerte el tiempo que has dedicado a resolver mi problema.

Gracias.


-----------------------------------
gambafeliz
Viernes, 26 Junio 2020, 19:24

Re: [Solucionado] Ver Texto Al Posicionarse Con El Ratón Encima De Celda
-----------------------------------
Gracias, calcena

[strike]Aprovecho tu hilo para preguntarte si no es para ti un inconveniente. Estas haciendo una aplicación de gestión, ¿verdad?, te lo pregunto por que he ido observando tus preguntas y mas o menos me pareció. Es que justamente si me has observado a mi, yo también estoy haciendo una y te lo digo por si nos podemos ayudar mutuamente en partes que nos sirvan a los dos. Es solo si tu quieres y nada mas, no te sientas obligado ni nada, es que siempre dos podemos llegar mas lejos aunque sean aplicaciones aunque distintas, parecidas en conceptos mas o menos similares.
[/strike]
En fin, es solo una pregunta. 

Aaadios :)

Nota: Déjalo no me hagas caso. Lo he pensado y es algo inviable, yo lo ví desde el punto de vista de pasarnos bloques que nos interesen a los dos. pero lo digo arriba no es válido como formula para dos personas con proyectos separados y propósitos diferentes en el presente o futuro.


-----------------------------------
calcena
Domingo, 28 Junio 2020, 12:33

Re: [Solucionado] Ver Texto Al Posicionarse Con El Ratón Encima De Celda
-----------------------------------
[quote user="gambafeliz" post="48949"]Gracias, calcena

[strike]Aprovecho tu hilo para preguntarte si no es para ti un inconveniente. Estas haciendo una aplicación de gestión, ¿verdad?, te lo pregunto por que he ido observando tus preguntas y mas o menos me pareció. Es que justamente si me has observado a mi, yo también estoy haciendo una y te lo digo por si nos podemos ayudar mutuamente en partes que nos sirvan a los dos. Es solo si tu quieres y nada mas, no te sientas obligado ni nada, es que siempre dos podemos llegar mas lejos aunque sean aplicaciones aunque distintas, parecidas en conceptos mas o menos similares.
[/strike]
En fin, es solo una pregunta. 

Aaadios :)

Nota: Déjalo no me hagas caso. Lo he pensado y es algo inviable, yo lo ví desde el punto de vista de pasarnos bloques que nos interesen a los dos. pero lo digo arriba no es válido como formula para dos personas con proyectos separados y propósitos diferentes en el presente o futuro.[/quote]

Te he dejado un mensaje privado.

Ya me dirás.

Saludos.


