Cambiare il colore di fondo di una riga cliccata in una GridView e far tornare quello di un'altra al colore iniziale

Da Gambas-it.org - Wikipedia.

Il caso è quello in cui in una GridView ogni qual volta si clicca all'interno di una sua riga, questa si colora, ed un'altra riga, precedentemente colorata, torna ad assumere il colore predefinito.

Si potrà adottare il seguente codice:

Public Sub Form_Open()

 Dim b As Byte
   
 With GridView1  
   .Columns.Count = 4  
   .Rows.Count = 4
 End With  

' All'inizio la prima riga in alto assume il colore giallo:
 For b = 0 To GridView1.Columns.Max
   GridView1[0, b].Background = &FFFF00
 Next
  
End


Public Sub GridView1_Click()
  
 Dim j, k As Byte

' Viene attribuito il colore predefinito a tutte le righe:
 With GridView1
   For k = 0 To .rows.Max
     For j = 0 To .Columns.Max
       GridView1[k, j].Background = Color.Default
     Next
   Next
 End With
 
' Viene quindi attribuito il colore giallo alla riga cliccata:
 For j = 0 To GridView1.Columns.Max
   GridView1[GridView1.Row, j].Background = &FFFF00
 Next
 
End


Uso dei tasti Giù e Su della tastiera

Se si intendono utilizzare i tasti Giù e Su della tastiera, anziché il mouse, un possibile codice è il seguente:

Public Sub Form_Open()    
 
 Dim b As Byte    
      
 With GridView1      
   .Columns.Count = 4      
   .Rows.Count = 4    
 End With      
      
' All'inizio la prima riga in alto assume il colore giallo:
 For b = 0 To GridView1.Columns.Max    
   GridView1[0, b].Background = &FFFF00    
 Next    
     
 GridView1.Row = 0  
    
End    
      
      
Public Sub GridView1_KeyPress()  
    
 Dim j, k As Byte      
    
 With GridView1    
   For k = 0 To .rows.Max    
     For j = 0 To .Columns.Max    
       GridView1[k, j].Background = Color.Default    
     Next    
   Next    
 End With    
 
 Select Case Key.Code  
   Case Key.Down   
     If GridView1.Row + 1 < GridView1.Rows.Count Then   
       For j = 0 To GridView1.Columns.Max    
         GridView1[GridView1.Row + 1, j].Background = &FFFF00  
       Next  
     Else  
       For j = 0 To GridView1.Columns.Max    
         GridView1[GridView1.Row, j].Background = &FFFF00  
       Next  
     Endif  
         
   Case Key.Up  
     If GridView1.Row - 1 > -1 Then   
       For j = 0 To GridView1.Columns.Max    
         GridView1[GridView1.Row - 1, j].Background = &FFFF00  
       Next  
     Else  
       For j = 0 To GridView1.Columns.Max    
         GridView1[GridView1.Row, j].Background = &FFFF00  
       Next  
     Endif  
 End Select  
       
End

I codici dei due paragrafi precedenti possono essere anche semplicemente congiunti per ottenere l'effetto sia con il mouse che con i tasti.