Assegnare colori allo sfondo ed al testo di una riga selezionata di una ListView
Impostata la chiave identificatrice dell'Item della ListView, è possibile assegnare direttamente - ossia da una proprietà - colori allo sfondo ed al testo della riga selezionata di un oggetto ListView.
Mostriamo un esempio pratico:
Public Sub Form_Open() With ListView1 .Add("1", "Riga_1") .Add("2", "Riga_2") .Add("3", "Riga_3") .Add("4", "Riga_4") .Add("5", "Riga_5") .Add("6", "Riga_6") .Add("7", "Riga_7") End With End Public Sub ListView1_Select() Dim s As String ' Assegna i colori predefiniti allo sfondo e al testo di ciascuna riga della "ListView": For Each s In ListView1.Keys ListView1[s].Background = Color.TextBackground ListView1[s].Foreground = Color.TextForeground Next ' Assegna il colore blu allo sfondo e giallo al testo presente nella corrente riga cliccata della "ListView": With ListView1.Current .Background = Color.Blue .Foreground = Color.Yellow End With End
Usare l'Oggetto "Figlio" della ListView
Una seconda modalità (che qui si riporta per soli fini didattci) tiene conto che l'oggetto ListView è composto anche dall'oggetto GridView, quale suo "Children". Si potrà dunque agire su tale oggetto GridView per impostare il colore dello sfondo della riga selezionata (cliccata) della ListView. Si agirà, però, sull'item selezionato della ListView (in tal caso l'assegnazione del colore è diretto) per imporre al testo in esso presente il colore prescelto.
Va precisato che per ottenere il predetto risultato sarà necessario usare le librerie grafiche QT (dunque uno dei seguenti Componenti Gambas: gb.gui.qt o gb.qt4 oppure gb.qt5) !
Mostriamo un esempio pratico, nel quale verrà colorato di blu lo sfondo e di giallo il testo della riga cliccata di una ListView. Lo sfondo ed il testo della riga precedentemente cliccata torna ai colori predefiniti.
Public Sub Form_Open() With ListView1 .Add("1", "Riga_1") .Add("2", "Riga_2") .Add("3", "Riga_3") .Add("4", "Riga_4") .Add("5", "Riga_5") .Add("6", "Riga_6") .Add("7", "Riga_7") End With End Public Sub ListView1_Select() Dim j As Byte Dim ob As Object ' Assegna alla variabile di tipo oggetto il "figlio" (che è una "GridView") della "ListView": ob = ListView1.Children[0] ' Assegna i colori di base allo sfondo della "GridView-figlio" e al testo presente nella "ListView": For j = 0 To ob.Rows.Max ob[j, 0].Background = Color.Default ' "[CStr(j + 1)]" rappresenta la chiave distintiva e non il numero di Indice dell'array ! ListView1[CStr(j + 1)].Richtext = "<FONT Color=#212121>" & listView1[j + 1].text Next ' Assegna il colore blu allo sfondo della riga cliccata della "GridView-figlio": ob[ob.Row, 0].Background = &0000FF ' Assegna il colore giallo al testo presente nella riga cliccata della "ListView": ListView1[CStr(ob.Row + 1)].Richtext = "<FONT Color=#FFFF00><B>" & listView1[ob.Row + 1].text End