Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
[Solucionado] Ver Texto Al Posicionarse Con El Ratón Encima De Celda
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje [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, 21:50; editado 2 veces 
calcena - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.  
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
alessandri - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
calcena - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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, 16:15; editado 2 veces 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
calcena - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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, 21:25; editado 4 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Problema Con La Fabricacion De Un Editor D... Pablo-GNU General 6 Viernes, 22 Enero 2010, 23:53 Ver último mensaje
Pablo-GNU
No hay nuevos mensajes Formulario Encima De Todo jsbsan General 3 Miercoles, 04 Agosto 2010, 22:50 Ver último mensaje
Invitado
No hay nuevos mensajes Ayuda A Principiante Con Uso De Texto Plan... gambi General 3 Miercoles, 05 Octobre 2011, 04:54 Ver último mensaje
ivanovichenco
No hay nuevos mensajes Editar Texto De Un ítem De Treeview [Solu... tincho Aplicaciones/Fragmentos de Código 1 Jueves, 20 Diciembre 2018, 23:47 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

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
No puede descargar archivos
No puede publicar eventos en el calendario