Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    evidenziare il record in un list view

    Ciao ragazzi qualcuno sa come evidenziare dei record in una list view, in base ad un colore scelto a piacere?Grazie anticipatamente. :rollo: :rollo:

  2. #2
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    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

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,461

    Moderazione

    Originariamente inviato da printlist
    Ciao ragazzi qualcuno sa come evidenziare dei record in una list view, in base ad un colore scelto a piacere?
    Il linguaggio lo hai specificato? e la versione? :master:
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Mi scuso con alka.
    Non avevo notato che mancava il linguaggio, altrimenti non avrei risposto.
    Il codice postato è VB6.
    LM

  5. #5

    [VB6]

    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

  6. #6
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    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

  7. #7
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    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:

    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
    Ho provato e l'esempio è funzionante.
    LM

  8. #8
    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

  9. #9
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    ... 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à.
    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...
    LM

  10. #10
    Io ho lo stesso problema, colgo l'occasione per continuare la discussione.
    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...
    ForeColor non evidenzia la riga, ma la scritta all'interno della riga.
    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?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.