Differenze tra le versioni di "Assegnare colori allo sfondo ed al testo di una riga selezionata di una ListView"

Da Gambas-it.org - Wikipedia.
Riga 1: Riga 1:
Attualmente non è possibile assegnare ''direttamente'' - ossia da una proprietà - colori allo sfondo ed al testo di una sola riga selezionata di un oggetto ''ListView''.
+
Impostata la chiave identificatrice dell'<I>Item</i> della ''ListView'', è possibile assegnare ''direttamente'' - ossia da una proprietà - colori allo sfondo ed al testo della riga selezionata di un oggetto ''ListView''.
  
Per superare questo ostacolo si può adottare uno stratagemma, basandosi sulla circostanza che l'oggetto ''ListView'' è composto anche dall'oggetto ''GridView''. Pertanto, si potrà agire sull'oggetto ''GridView'', figlio della ''ListView'' per impostare il colore dello sfondo della riga selezionata (cliccata) della ''ListView''; 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:
 +
  '''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 i As Integer
 +
 
 +
<FONT Color=gray>' ''Assegna i colori predefiniti allo sfondo e al testo di ciascuna riga della "ListView":''</font>
 +
  For i = 0 To ListView1.Keys.Max
 +
    ListView1[ListView1.Keys[i]].Background = Color.TextBackground
 +
    ListView1[ListView1.Keys[i]].Foreground = Color.TextForeground
 +
  Next
 +
 
 +
<FONT Color=gray>' ''Assegna il colore blu allo sfondo e giallo al testo presente nella riga cliccata della "ListView":''</font>
 +
  ListView1[listView1.Key].Background = Color.Blue
 +
  ListView1[listView1.Key].Foreground = Color.Yellow
 +
 
 +
'''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 <SPAN Style="text-decoration:underline">precisato</span> che per ottenere il predetto risultato sarà <SPAN Style="text-decoration:underline">necessario</span> usare le librerie grafiche '''QT''' (dunque uno dei seguenti Componenti Gambas: ''gb.gui.qt'' o ''gb.qt4'' oppure ''gb.qt5'') !
 
Va <SPAN Style="text-decoration:underline">precisato</span> che per ottenere il predetto risultato sarà <SPAN Style="text-decoration:underline">necessario</span> usare le librerie grafiche '''QT''' (dunque uno dei seguenti Componenti Gambas: ''gb.gui.qt'' o ''gb.qt4'' oppure ''gb.qt5'') !
Riga 27: Riga 62:
 
   Dim ob As Object
 
   Dim ob As Object
 
   
 
   
  <FONT Color=gray>' ''Assegnamo alla variabile di tipo oggetto il "figlio" (che è una "GridView") della "ListView":''</font>
+
  <FONT Color=gray>' ''Assegna alla variabile di tipo oggetto il "figlio" (che è una "GridView") della "ListView":''</font>
 
   ob = ListView1.Children[0]
 
   ob = ListView1.Children[0]
 
    
 
    
  <FONT Color=gray>' ''Assegnamo i colori di base allo sfondo della "GridView-figlio" e al testo presente nella  "ListView":''</font>
+
  <FONT Color=gray>' ''Assegna i colori di base allo sfondo della "GridView-figlio" e al testo presente nella  "ListView":''</font>
 
   For j = 0 To ob.Rows.Max
 
   For j = 0 To ob.Rows.Max
 
     ob[j, 0].Background = Color.Default
 
     ob[j, 0].Background = Color.Default
Riga 37: Riga 72:
 
   Next
 
   Next
 
    
 
    
  <FONT Color=gray>' ''Assegnamo il colore blu allo sfondo della riga cliccata della "GridView-figlio":''</font>
+
  <FONT Color=gray>' ''Assegna il colore blu allo sfondo della riga cliccata della "GridView-figlio":''</font>
 
   ob[ob.Row, 0].Background = &0000FF
 
   ob[ob.Row, 0].Background = &0000FF
 
    
 
    
  <FONT Color=gray>' ''Assegnamo il colore giallo al testo presente nella riga cliccata della "ListView":''</font>
+
  <FONT Color=gray>' ''Assegna il colore giallo al testo presente nella riga cliccata della "ListView":''</font>
 
   ListView1[CStr(ob.Row + 1)].Richtext = "&lt;FONT Color=#FFFF00>&lt;B>" & listView1[ob.Row + 1].text
 
   ListView1[CStr(ob.Row + 1)].Richtext = "&lt;FONT Color=#FFFF00>&lt;B>" & listView1[ob.Row + 1].text
 
    
 
    
 
  '''End'''
 
  '''End'''

Versione delle 10:36, 17 set 2019

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 i As Integer
 
' Assegna i colori predefiniti allo sfondo e al testo di ciascuna riga della "ListView":
 For i = 0 To ListView1.Keys.Max
   ListView1[ListView1.Keys[i]].Background = Color.TextBackground
   ListView1[ListView1.Keys[i]].Foreground = Color.TextForeground
 Next
 
' Assegna il colore blu allo sfondo e giallo al testo presente nella riga cliccata della "ListView":
 ListView1[listView1.Key].Background = Color.Blue
 ListView1[listView1.Key].Foreground = Color.Yellow
 
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