Ciao ragazzi qualcuno sa come evidenziare dei record in una list view, in base ad un colore scelto a piacere?Grazie anticipatamente. :rollo: :rollo:
Ciao ragazzi qualcuno sa come evidenziare dei record in una list view, in base ad un colore scelto a piacere?Grazie anticipatamente. :rollo: :rollo:
Ciao printlist,
dopo aver caricato i rs nella LV:
codice:' Colora gli Items: Dim i As Integer Dim LI As ListItem For i = 1 To FrmTua.LvTua.ListItems.Count Set LI = FrmTua.LvTua.ListItems(i) With LI .ForeColor = rgb(255, 0, 0) ' Colore Bleu: .ListSubItems(10).ForeColor = rgb(30, 45, 250) .ListSubItems(11).ForeColor = rgb(30, 45, 250) .ListSubItems(12).ForeColor = rgb(30, 45, 250) ' Colore Rosso: .ListSubItems(13).ForeColor = rgb(255, 0, 0) '.ListSubItems(13).Bold = True .ListSubItems(14).ForeColor = rgb(255, 0, 0) .ListSubItems(15).ForeColor = rgb(255, 0, 0) End With Next![]()
LM
Il linguaggio lo hai specificato? e la versione? :master:Originariamente inviato da printlist
Ciao ragazzi qualcuno sa come evidenziare dei record in una list view, in base ad un colore scelto a piacere?
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Mi scuso con alka.
Non avevo notato che mancava il linguaggio, altrimenti non avrei risposto.
Il codice postato è VB6.
LM
Scusate se ho commesso l'errore di non aver inserito il linguaggio.Colgo l' occasione per poter esprimere meglio il mio problemino.Il codice che ho scritto qui sotto mi riporta nella listview dei record contraddistinti da una icona che cambia in base al valore che ha il campo "Priorità".Fino a qui nessun problema.Io vorrei semplicemente evidenziare tutte le righe della listview di un colore, ad esenpio "Rosso" se il campo Priorità è TRUE e "Verde" Se è FALSE, spero di essere stato chiaro e scusate ancora per non aver inserito il codice nel TITOLO GRAZIE!!!!!!!!!!
Private Sub Form_Activate()
List1.Refresh
MDIForm1.Enabled = False
List1.SmallIcons = ImageList1
Dim itmX As ListItem
Dim DB As Database
Dim sQL As String
List1.ListItems.Clear
sQL = "select * from Rubrica where [DataChiusura] is null "
Set DB = OpenDatabase(App.Path & "\Agenda.mdb")
Set RS = DB.OpenRecordset(sQL)
Do Until RS.EOF
If RS.Fields("Priorità").Value = False Then
Set itmX = List1.ListItems.Add(, , "tips", , 1)
Else
Set itmX = List1.ListItems.Add(, , "tips", , 2)
End If
With RS
itmX.Text = .Fields("ID")
itmX.SubItems(1) = .Fields("O_F")
itmX.SubItems(2) = .Fields("Piano")
itmX.SubItems(3) = .Fields("Stanza")
itmX.SubItems(4) = .Fields("Call_Center")
itmX.SubItems(5) = .Fields("Operatore_SIT")
itmX.SubItems(6) = .Fields("DataApertura")
itmX.SubItems(7) = .Fields("OraApertura")
RS.MoveNext
End With
Loop
RS.Close
End Sub
Ma il codice che ti ho postato l'hai provato, o no ?
Dopo che hai popolato la LV fai il ciclo e colora gli itmX.SubItems nelle tonalità che vuoi.
LM
L'esempio che ti avevo postato colorava solo alcuni SubItems (doveva essere adattato alle tue necessità) mentre il seguente, se si verifica la condizione da te posta (e non inserita per prevità nel codice) dà il rosso a tutti i SubItems:
Ho provato e l'esempio è funzionante.codice:Private Sub Command1_Click() 'Formatta ListView per visualizzare i nuovi dati : Form1.ListView1.ListItems.Clear Form1.ListView1.View = lvwReport Dim ConC As New ADODB.Connection Dim RSTc As New ADODB.Recordset Dim itmX As ListItem Dim DataConnessione As String Dim i As Integer Dim y As Integer Dim LI As ListItem DataConnessione = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\ProvaLV.mdb;Persist Security Info=False;" 'Esegue la connessione con il DataBase Tbl1: With ConC .ConnectionString = DataConnessione .CursorLocation = adUseClient 'tipo di cursore .Mode = adModeShareDenyNone 'nessuna limitazione .CommandTimeout = 15 .Open End With RSTc.Source = "SELECT * FROM Tbl1" RSTc.Open , ConC, adOpenDynamic, adLockOptimistic Do Until RSTc.EOF Set itmX = Form1.ListView1.ListItems.Add() With RSTc itmX.Text = .Fields("ID") ' Colore Rosso: itmX.ForeColor = RGB(255, 0, 0) itmX.SubItems(1) = .Fields("O_F") itmX.SubItems(2) = .Fields("Piano") itmX.SubItems(3) = .Fields("Stanza") itmX.SubItems(4) = .Fields("Call_Center") itmX.SubItems(5) = .Fields("Operatore_SIT") itmX.SubItems(6) = .Fields("DataApertura") itmX.SubItems(7) = .Fields("OraApertura") RSTc.MoveNext End With Loop ' Colora di rosso ListSubItems: For i = 1 To Form1.ListView1.ListItems.Count Set LI = Form1.ListView1.ListItems(i) With LI ' Colore Rosso: For y = 1 To 7 .ListSubItems(y).ForeColor = RGB(255, 0, 0) ' Mette il grassetto nella posizione/colonna 5: If (y) = 5 Then .ListSubItems(y).Bold = True End If Next y End With Next 'Chiude e cancella il recordSet: RSTc.Close Set RSTc = Nothing 'Chiude e cancella la connessione: ConC.Close Set ConC = Nothing End Sub
![]()
LM
Grazie per avermi suggerito questo esempio ,ma io intendo poter evidenziare l'intera riga con un colore rosso o verde a seconda del valore del campo Priorità.Grazie
Non sei assolutamente chiaro.... semplicemente evidenziare tutte le righe della listview di un colore, ad esenpio "Rosso" se il campo Priorità è TRUE e "Verde" Se è FALSE ...
E poi:
... ma io intendo poter evidenziare l'intera riga con un colore rosso o verde a seconda del valore del campo Priorità.
Per quanto riguarda la prima richiesta il codice soddisfa le tue esigenze di evidenziazione, dopo che avrai inserita, nel modo più opportuno, la condizione ...If RS.Fields("Priorità").Value = False Then
Un pò d'iniziativa e d'impegno non guasta...![]()
LM
Io ho lo stesso problema, colgo l'occasione per continuare la discussione.
ForeColor non evidenzia la riga, ma la scritta all'interno della riga.Originariamente inviato da LMondi
Non sei assolutamente chiaro.
Per quanto riguarda la prima richiesta il codice soddisfa le tue esigenze di evidenziazione, dopo che avrai inserita, nel modo più opportuno, la condizione ...If RS.Fields("Priorità").Value = False Then
Un pò d'iniziativa e d'impegno non guasta...![]()
Forse "riga" è un termine un po' generico...
Quello che sto cercando io (e credo anche Printlist) è lo sfondo, non il testo.
Inoltre mi chiedo: quando seleziono una riga, perchè non viene evidenziata? (evidenzia solo il primo campo)
Perchè se la listview perde il focus non posso + vedere quale riga è selezionata?
Sbaglio qualcosa o è normale?