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.
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...

Prueba este código. No pude conseguir que 'FindChild' (era Find) funcionara ya que devuelve un Control.
Código:
Gridview1 As GridView
Public Sub Gridview1_MouseMove()
Dim iRow, iCol, iRowFix As Integer
For iRow = 0 To Gridview1.Rows.Max
For iCol = 0 To Gridview1.Columns.Max
Gridview1[iRow, iCol].Background = Color.Default
Gridview1[iRow, iCol].Text = ""
Next
Next
iRowFix = Gridview1.Rowat(Mouse.Y)
If iRowFix = -1 Then iRowFix = Gridview1.Rows.Max
For iCol = 0 To Gridview1.Columns.Max
Gridview1[iRowFix, iCol].Background = Color.Yellow
Gridview1[iRowFix, iCol].Text = "¡Hola!"
Next
End
Public Sub Form_Open()
With Me
.Height = 500
.Width = 600
.Padding = 5
.Center
End With
With Gridview1 = New GridView(Me) As "Gridview1"
.Rows.Count = 20
.Columns.Count = 10
.Expand = True
End With
End
(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

cogier eres un mago
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...
(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.
Código:
Gridview1 As GridView
Public Sub Gridview1_MouseMove()
Dim iRow, iCol, iRowFix As Integer
Cebra
iRowFix = Gridview1.Rowat(Mouse.Y)
If iRowFix = -1 Then Return
For iCol = 0 To Gridview1.Columns.Max
Gridview1[iRowFix, iCol].Background = 12632256
Next
End
Public Sub Cebra()
Dim iRow, iCol As Integer
Dim bSwitch As Boolean
For iRow = 0 To Gridview1.Rows.Max
For iCol = 0 To Gridview1.Columns.Max
If bSwitch Then
Gridview1[iRow, iCol].Background = 14737632
Else
Gridview1[iRow, iCol].Background = Color.Default
End If
Next
bSwitch = Not bSwitch
Next
End
Public Sub Form_Open()
Dim iLoop As Integer
With Me
.Height = 480
.Width = 600
.Padding = 5
.Arrangement = Arrange.Vertical
.Center
End With
With Gridview1 = New GridView(Me) As "Gridview1"
.Rows.Count = 20
.Columns.Count = 5
.Header = Gridview.Both
.Expand = True
End With
For iLoop = 0 To Gridview1.Columns.Max
Gridview1.Columns[iLoop].Title = Chr(65 + iLoop)
Next
Cebra
End
Public Sub Form_Arrange()
Gridview1.Columns.Width = (Gridview1.Width / Gridview1.Columns.Count) - 10
End
Gracias cogier sinceramente para mi es un honor tener tu ayuda. Simplemente
Genial !!!!
Well done....

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.
Código:
Gridview1 As GridView
Private $last As Integer
Public Sub Form_Open()
Dim iLoop As Integer
$last = -2
With Me
.Height = 480
.Width = 600
.Padding = 5
.Arrangement = Arrange.Vertical
.Center
End With
With Gridview1 = New GridView(Me) As "Gridview1"
.Rows.Count = 20
.Columns.Count = 5
.Header = Gridview.Both
.Expand = True
End With
For iLoop = 0 To Gridview1.Columns.Max
Gridview1.Columns[iLoop].Title = Chr(65 + iLoop)
Gridview1.Columns[iloop].Expand = True
Next
End
Public Sub Gridview1_Data(Row As Integer, Col As Integer)
cebra(Row, Col)
End
Private Sub cebra(Row As Integer, Col As Integer)
If Row Mod 2 = 0 Then
Gridview1[Row, Col].Background = Color.lighter(Color.Background)
Else
Gridview1[Row, Col].Background = Color.Background
Endif
End
Public Sub Gridview1_MouseMove()
Dim iRow, iCol, iRowFix As Integer
iRowFix = Gridview1.Rowat(Mouse.Y)
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.
For iCol = 0 To Gridview1.Columns.Max
Gridview1[iRowFix, iCol].Background = Color.lighter(Color.SelectedBackground)
If $last > -1 Then 'Si $Last es -1 es que todavía no tenemos ninguna fila a la que restaurar el color.
cebra($last, iCol)
Endif
Next
$last = iRowfix 'almacenamos el número de la fila modificada
End