Assegnare colori allo sfondo ed al testo di una riga selezionata di una ListBox

Da Gambas-it.org - Wikipedia.

Attualmente non è possibile assegnare direttamente - ossia da una proprietà - colori allo sfondo ed al testo di una sola riga selezionata di un oggetto ListBox.

Per superare questo ostacolo si può adottare uno stratagemma, basandosi sulla circostanza che l'oggetto ListBox è composto anche dall'oggetto GridView. Pertanto, si potrà agire sull'oggetto GridView, figlio della ListBox per impostare il colore dello sfondo della riga selezionata (cliccata) della ListBox; e si potrà, però, agire sull'item selezionato della ListView (in tal caso l'assegnazione del colore è diretto) per imporre al testo in esso presente il colore prescelto.


Uso della proprietà .RichText dell'oggetto ListBox

Mostriamo un esempio pratico, nel quale utilizzando la proprietà .RichText verrà colorato di blu lo sfondo e di giallo il testo della riga cliccata di una ListBox. Lo sfondo ed il testo della riga precedentemente cliccata torna ai colori predefiniti. Il testo, inoltre, presente in una riga cliccata della ListBox, verrà assegnato ad un altro oggetto, ad una TextLabel.

Public Sub Form_Open()
 
 With ListBox1
   .Add("alfa")
   .Add("beta")
   .Add("gamma")
   .Add("delta")
 End With

End


Public Sub ListBox1_Select()
 
 Dim j As Byte
 Dim ob As Object
 
' Assegnamo alla variabile di tipo oggetto il "figlio" (che è una "GridView") della "ListBox":
  ob = ListBox1.Children[0]
 
' Assegnamo i colori di base allo sfondo della "GridView-figlio" e al testo presente nella  "ListBox":
  For j = 0 To ob.Rows.Max
    ob[j, 0].Background = Color.Default
    ob[j, 0].Richtext = "" & ListBox1[j].text
  Next
   
' Assegnamo il colore blu allo sfondo della riga cliccata della "GridView-figlio":
  ob[ob.Row, 0].Background = &0000FF
  
' Assegnamo il colore giallo al testo presente nella riga cliccata della "ListBox":
  ob[ob.Row, 0].RichText = "<FONT Color=#FFFF00><B>" & ListBox1[ob.Row].text
  
  TextLabel1.Text = ListBox1.Text
  
End


Uso delle proprietà .Text e .Foreground dell'oggetto ListBox

In quest'altro esempio, simile al precedente, si utilizzeranno le proprietà .Text e .Foreground dell'oggeto ListBox:

Public Sub Form_Open()
 
 With ListBox1
   .Add("alfa")
   .Add("beta")
   .Add("gamma")
   .Add("delta")
 End With

End


Public Sub ListBox1_Select()
 
 Dim j As Byte
 Dim ob As Object
 
' Assegnamo alla variabile di tipo oggetto il "figlio" (che è una "GridView") della "ListBox":
  ob = ListBox1.Children[0]
 
' Assegnamo i colori di base allo sfondo della "GridView-figlio" e al testo presente nella  "ListBox":
  For j = 0 To ob.Rows.Max
    ob[j, 0].Background = Color.Default
    ob[j, 0].text = ListBox1[j].text
    ob[j, 0].Foreground = Color.Default
  Next
   
' Assegnamo il colore blu allo sfondo della riga cliccata della "GridView-figlio":
  ob[ob.Row, 0].Background = &0000FF
  
' Assegnamo il colore giallo al testo presente nella riga cliccata della "ListBox":
  ob[ob.Row, 0].Foreground = &FFFF00
  
End