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.
Versione del 4 mag 2021 alle 15:35 di Vuott (Discussione | contributi)
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.