[Solucionado] Ver Texto Al Posicionarse Con El Ratón Encima De Celda


Ir a la página 1, 2  Siguiente

Objetivo: [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.

última edición por calcena el Jueves, 25 Junio 2020, 20:50; editado 2 veces
Perfil MP  
Objetivo: Re: Ver Texto Al Posicionarse Con El Ratón Encima De Celda
calcena escribió:  
... de esa celda mediante el ID que se almacena en la primera columna.

No he comprendido bien.

Perfil MP  
Objetivo: 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.

Perfil MP  
Objetivo: 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.

Perfil MP  
Objetivo: Re: Ver Texto Al Posicionarse Con El Ratón Encima De Celda
gambafeliz escribió:  
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.


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.

Perfil MP  
Objetivo: 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.

Código: [Descargar] [Ocultar]
  1. Public Sub GridView1_MouseMove() 
  2.  
  3. Dim iCW0, iCW1 As Integer 
  4.  
  5. ' Ejemplo para dos columnas, 0 y 1 
  6. iCW0 = GridView1[0, 0].W ' variable integer para recuperar el ancho de la columna (C=Columan, W=Ancho) en fila 0 
  7. iCW1 = GridView1[0, 1].W ' variable integer para recuperar el ancho de la columna (C=Columan, W=Ancho) en fila 1 
  8.  
  9. ' Los Bordes númericos y del header = 20px, para este ejemplo. 
  10. Label1.Text = Int((Mouse.ScreenY - GridView1.ScreenY) / 20) - 1 ' [-1] es para obtener Row 
  11.  
  12. ' Comparo la coordenada del mouse con: 
  13. ' 1.Posición donde esta el GridView1 + 20px del borde donde esta numerada la fila 
  14. ' 2.Posición donde esta el GridView1 + 20px del borde donde esta numerada la fila + Ancho de la columna 0  
  15. If Mouse.ScreenX > (GridView1.ScreenX + 20) And Mouse.ScreenX < (GridView1.ScreenX + 20 + iCW0) Then 
  16. Label2.Text = 0 
  17. Else 
  18. Label2.Text = 1 
  19. Endif 
  20.  
  21. ' Ya tenemos la fila y la columna mapeada ahora solo queda poner la información 
  22. If CInt(Label1.Text) > -1 And CInt(Label1.Text) < 6 Then 
  23. Label3.Text = GridView1[CInt(Label1.Text), CInt(Label2.Text)].Text 
  24. Endif 
  25.  
  26. End 
  27.  


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

Saludos

última edición por gambafeliz el Miercoles, 24 Junio 2020, 15:15; editado 2 veces
Perfil MP  
Objetivo: Re: Ver Texto Al Posicionarse Con El Ratón Encima De Celda
gambafeliz escribió:  
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.

Código: [Descargar] [Ocultar]
  1. Public Sub GridView1_MouseMove() 
  2.  
  3. Dim iCW0, iCW1 As Integer 
  4.  
  5. ' Ejemplo para dos columnas, 0 y 1 
  6. iCW0 = GridView1[0, 0].W ' variable integer para recuperar el ancho de la columna (C=Columan, W=Ancho) en fila 0 
  7. iCW1 = GridView1[0, 1].W ' variable integer para recuperar el ancho de la columna (C=Columan, W=Ancho) en fila 1 
  8.  
  9. ' Los Bordes númericos y del header = 20px, para este ejemplo. 
  10. Label1.Text = Int((Mouse.ScreenY - GridView1.ScreenY) / 20) - 1 ' [-1] es para obtener Row 
  11.  
  12. ' Comparo la coordenada del mouse con: 
  13. ' 1.Posición donde esta el GridView1 + 20px del borde donde esta numerada la fila 
  14. ' 2.Posición donde esta el GridView1 + 20px del borde donde esta numerada la fila + Ancho de la columna 0  
  15. If Mouse.ScreenX > (GridView1.ScreenX + 20) And Mouse.ScreenX < (GridView1.ScreenX + 20 + iCW0) Then 
  16. Label2.Text = 0 
  17. Else 
  18. Label2.Text = 1 
  19. Endif 
  20.  
  21. ' Ya tenemos la fila y la columna mapeada ahora solo queda poner la información 
  22. If CInt(Label1.Text) > -1 And CInt(Label1.Text) < 6 Then 
  23. Label3.Text = GridView1[CInt(Label1.Text), CInt(Label2.Text)].Text 
  24. Endif 
  25.  
  26. End 
  27.  


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

Saludos


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.

Perfil MP  
Objetivo: Re: Ver Texto Al Posicionarse Con El Ratón Encima De Celda
calcena escribió:  


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.


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.

Perfil MP  
Objetivo: Re: Ver Texto Al Posicionarse Con El Ratón Encima De Celda
Como exemplo general y simple, yo propondria este codigo:

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

última edición por vuott el Miercoles, 24 Junio 2020, 20:25; editado 4 veces
Perfil MP  
Objetivo: Re: Ver Texto Al Posicionarse Con El Ratón Encima De Celda
vuott escribió:  
Como exemplo general y simple, yo propondria este codigo:


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

Perfil MP  
Ir a la página 1, 2  Siguiente

Página 1 de 2


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.2892s (PHP: -59% SQL: 159%)
Consultas SQL: 48 - Debug off - GZIP Activado