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

Da Gambas-it.org - Wikipedia.
Versione del 12 feb 2016 alle 17:51 di Vuott (Discussione | contributi) (Creata pagina con "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...")

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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.


Mostriamo un esempio pratico, nel quale 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