Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

[SOLUCIONADO]  Iluminar Row de un Gridview al situarse encima de una celda
#1

Hola

Alguna pistilla para iluminar Row de un Gridview al situarse encima de una celda, pero muy importante si hacer click solo estando encima de una celda de la fila.

Gracias.
    ¡Gracias!
#2

Rápidamente:  con Mousemove y Find, luego un for i grdEste[i, Columna].Background = Color.Lightter(Color.Background)
Si lo ves necesario, detallamos.

PS,—¡Ondia!, metedura de pata, hay que cambiar «Column» por «Row», no sé por qué lo he entendido al revés...  Cry

En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
    ¡Gracias!
#3

Prueba este código. No pude conseguir que 'FindChild' (era Find) funcionara ya que devuelve un Control.

GAMBAS
  1. Gridview1 As GridView
  2.  
  3. Public Sub Gridview1_MouseMove()
  4.  
  5.   Dim iRow, iCol, iRowFix As Integer
  6.  
  7.   For iRow = 0 To Gridview1.Rows.Max
  8.     For iCol = 0 To Gridview1.Columns.Max
  9.       Gridview1[iRow, iCol].Background = Color.Default
  10.       Gridview1[iRow, iCol].Text = ""
  11.     Next
  12.   Next
  13.  
  14.   iRowFix = Gridview1.Rowat(Mouse.Y)
  15.   If iRowFix = -1 Then iRowFix = Gridview1.Rows.Max
  16.  
  17.   For iCol = 0 To Gridview1.Columns.Max
  18.     Gridview1[iRowFix, iCol].Background = Color.Yellow
  19.     Gridview1[iRowFix, iCol].Text = "¡Hola!"
  20.   Next
  21.  
  22.  
  23. Public Sub Form_Open()
  24.  
  25.   With Me
  26.     .Height = 500
  27.     .Width = 600
  28.     .Padding = 5
  29.     .Center
  30.  
  31.   With Gridview1 = New GridView(Me) As "Gridview1"
  32.     .Rows.Count = 20
  33.     .Columns.Count = 10
  34.     .Expand = True
  35.  


    ¡Gracias!
#4

(04-09-2021, 17:07)Grandamakulo escribió:  Rápidamente:  con Mousemove y Find

Supongo que te refieres al evento MouseMove de GridView1 pero en mi Gambas no tengo el evento Find en GridView1.

Es que quizás no me he enterado bien o es que falta algo o no me he enterado. Por favor, si fueras tan amable de aclararme te lo agradecería.

Saludos, oye por cierto, me alegra saludarte que hace tiempo que no nos cruzamos Smile

Smile cogier eres un mago Smile

Si, funciona estupendo !!!!

Solo que yo antes de mover el mouse por las filas, ya tenia todas las celdas coloreadas a modo de cebra y al pasar el mouse según tu código me borra todos los colores de las filas y las pone en color blanco, así como, donde pasa el puntero del mouse, se pone en amarillo la fila.

¿Esto tiene una fácil solución según tu código? ¿que opinas?

Muchísimas gracias cogier...
    ¡Gracias!
#5

(04-09-2021, 19:43)gambafeliz escribió:  ¿Esto tiene una fácil solución según tu código? ¿que opinas?

Esperemos que esto solucione tu problema.

GAMBAS
  1. Gridview1 As GridView
  2.  
  3. Public Sub Gridview1_MouseMove()
  4.  
  5.   Dim iRow, iCol, iRowFix As Integer
  6.  
  7.   Cebra
  8.  
  9.   iRowFix = Gridview1.Rowat(Mouse.Y)
  10.   If iRowFix = -1 Then Return
  11.  
  12.   For iCol = 0 To Gridview1.Columns.Max
  13.     Gridview1[iRowFix, iCol].Background = 12632256
  14.   Next
  15.  
  16.  
  17. Public Sub Cebra()
  18.  
  19.   Dim iRow, iCol As Integer
  20.   Dim bSwitch As Boolean
  21.  
  22.   For iRow = 0 To Gridview1.Rows.Max
  23.     For iCol = 0 To Gridview1.Columns.Max
  24.       If bSwitch Then
  25.         Gridview1[iRow, iCol].Background = 14737632
  26.       Else
  27.         Gridview1[iRow, iCol].Background = Color.Default
  28.       End If
  29.     Next
  30.     bSwitch = Not bSwitch
  31.   Next
  32.  
  33.  
  34. Public Sub Form_Open()
  35.  
  36.   Dim iLoop As Integer
  37.  
  38.   With Me
  39.     .Height = 480
  40.     .Width = 600
  41.     .Padding = 5
  42.     .Arrangement = Arrange.Vertical
  43.     .Center
  44.  
  45.   With Gridview1 = New GridView(Me) As "Gridview1"
  46.     .Rows.Count = 20
  47.     .Columns.Count = 5
  48.     .Header = Gridview.Both
  49.     .Expand = True
  50.  
  51.   For iLoop = 0 To Gridview1.Columns.Max
  52.     Gridview1.Columns[iLoop].Title = Chr(65 + iLoop)
  53.   Next
  54.  
  55.   Cebra
  56.  
  57.  
  58. Public Sub Form_Arrange()
  59.  
  60.   Gridview1.Columns.Width = (Gridview1.Width / Gridview1.Columns.Count) - 10
  61.  


[-] Los siguientes 2 usuarios dicen gracias a cogier por este post:
  • gambafeliz, Grandamakulo
    ¡Gracias!
#6

Gracias cogier sinceramente para mi es un honor tener tu ayuda. Simplemente

Genial !!!!

Well done.... Smile
    ¡Gracias!
#7

Cita:Esperemos que esto solucione tu problema.

Cogier:
Me he permitido modificar tu código para adaptarlo a un gridview con evento Data. Ahora debería funcionar con mucha mayor rapidez para Gridviews con mus muchas filas (no tienes más que cambiar en la línea 19 el 20 por 2000000 y lo verás) y no se efectúan bucles innecesarios al mover el ratón sin cambiar de fila.

Espero que te guste.

Saludos.


GAMBAS
  1.    Gridview1 As GridView
  2.  
  3.     Private $last As Integer
  4.     
  5.     Public Sub Form_Open()
  6.      
  7.       Dim iLoop As Integer
  8.       
  9.       $last = -2
  10.       With Me
  11.         .Height = 480
  12.         .Width = 600
  13.         .Padding = 5
  14.         .Arrangement = Arrange.Vertical
  15.         .Center
  16.       End With
  17.      
  18.       With Gridview1 = New GridView(Me) As "Gridview1"
  19.         .Rows.Count = 20
  20.         .Columns.Count = 5
  21.         .Header = Gridview.Both
  22.         .Expand = True
  23.       End With
  24.      
  25.       For iLoop = 0 To Gridview1.Columns.Max
  26.         Gridview1.Columns[iLoop].Title = Chr(65 + iLoop)
  27.         Gridview1.Columns[iloop].Expand = True
  28.       Next
  29.  
  30.     End
  31.      
  32.  Public Sub Gridview1_Data(Row As Integer, Col As Integer)
  33.     
  34.     cebra(Row, Col)
  35.  
  36.  
  37. Private Sub cebra(Row As Integer, Col As Integer)
  38.  
  39.     If Row Mod 2 = 0 Then
  40.           Gridview1[Row, Col].Background = Color.lighter(Color.Background)
  41.     Else
  42.          Gridview1[Row, Col].Background = Color.Background
  43.     Endif
  44.     
  45.  
  46. Public Sub Gridview1_MouseMove()
  47.      
  48.     Dim iRow, iCol, iRowFix As Integer
  49.  
  50.     iRowFix = Gridview1.Rowat(Mouse.Y)
  51.     If iRowFix = -1 Or If iRowfix = $last Then Return 'Si no hay fila o no hemos cambiado de fila aunque se haya movido el ratón, no hacemos nada.
  52.     For iCol = 0 To Gridview1.Columns.Max
  53.         Gridview1[iRowFix, iCol].Background = Color.lighter(Color.SelectedBackground)
  54.         If $last > -1 Then 'Si $Last es -1 es que todavía no tenemos ninguna fila a la que restaurar el color.
  55.             cebra($last, iCol)
  56.         Endif
  57.     Next
  58.     $last = iRowfix 'almacenamos el número de la fila modificada
  59.     



No podemos regresar
[-] Los siguientes 2 usuarios dicen gracias a Shordi por este post:
  • gambafeliz, Grandamakulo
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)