Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    361

    [VB6]: Evidenziare righe ListView

    Ciao ragazzi
    volevo chiedervi un aiuto, io utilizzo la ListView per caricare i dati da una tabella access in questo modo

    Private WithEvents conn As ADODB.Connection
    Private WithEvents rs As ADODB.Recordset
    Private Sub Command1_Click()
    Set conn = New ADODB.Connection
    With conn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source=" & "C:\...\DB\DB.mdb"
    .Mode = adModeRead
    .Open
    End With
    Set rs = New ADODB.Recordset
    Dim strSQL As String

    strSQL = "SELECT ID, ID_FATTURA, DATA_EMISSIONE, DATA_SCADENZA FROM ID_ARTICOLI ORDER BY TXT_DESCRIZIONE;"
    rs.Open strSQL, conn, adOpenKeyset, adLockReadOnly
    Call Riempi_Lista(rs)
    End Sub

    Sub Riempi_Lista(ByRef rs As ADODB.Recordset)
    'secondo metodo per aggiungere la matrice di valori
    On Error Resume Next
    Dim objItem As ListItem
    Dim NumeroChar As Double
    LsVw1.ColumnHeaders.Clear
    LsVw1.ListItems.Clear
    LsVw1.View = lvwReport
    LsVw1.ColumnHeaders.Add , , "ID", (LsVw1.Width / 2000) 'larghezza della colonna
    LsVw1.ColumnHeaders.Add , , "ID_FATTURA", (LsVw1.Width / 4)
    LsVw1.ColumnHeaders.Add , , "DATA_EMISSIONE", (LsVw1.Width / 1.9)
    LsVw1.ColumnHeaders.Add , , "DATA_SCADENZA", (LsVw1.Width / 1.9)
    Do Until rs.EOF
    Set objItem = LsVw1.ListItems.Add()
    objItem.text = rs!ID 'prima colonna

    objItem.SubItems(1) = rs!ID_FATTURA
    objItem.SubItems(2) = Mid$(rs!ID_FATTURA, 1, 28) & "..."
    objItem.SubItems(3) = rs!DATA_EMISSIONE
    objItem.SubItems(4) = rs!DATA_SCADENZA
    rs.MoveNext
    Loop

    End Sub

    Quello che a me servirebbe è che quando riempio la lista delle fatture mi si visualizzi in rosso le fatture già scadute.
    Spero che si possa fare.
    Grazie vr-claudio

  2. #2
    E' molto semplice, se vuoi colorare il testo:
    codice:
    ListView1.Items(0).ForeColor = Color.Red
    mentre se vuoi colorare lo sfondo:
    codice:
    ListView1.Items(0).BackColor = Color.Red

  3. #3
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Il codice postato da Francesco è relativo a VB.Net, per cui non funzionerà con una ListView in Visual Basic 6. Inoltre in VB6 non è possibile variare lo sfondo relativo ad un solo Item, almeno con le proprietà standard.

    Il metodo per colorare una riga della ListView consiste nell'eseguire un ciclo sui suoi SubItem:

    codice:
    objItem.SubItems(4) = rs!DATA_SCADENZA
    Dim Scaduta As Boolean
    Scaduta = DateDiff("y", rs!DATA_SCADENZA, Date) > 0
    For i = 0 to LsVw1.ColumnHeaders.Count - 1
        If i = 0 Then
            objItem.ForeColor = IIf(Scaduta, vbRed, vbBlack)
        Else
            objItem.ListSubItem(i).ForeColor = IIf(Scaduta, vbRed, vbBlack)
        End If
    Next i
    Ovviamente il tutto diventa più flessibile se inserito in una Sub che accetta come argomenti l'indice dell'Item e il riferimento al controllo ListView.

    Boolean

    P.S.: Il codice l'ho scritto direttamente nel post, senza provarlo, quindi occhio agli errori

  4. #4
    Scusa! Non avevo fatto caso che serviva per VB6 (che io non conosco)...

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    361

    RE...

    Ciao ragazzi
    scusate il ritardo ma sono stato parecchio ammalato e non ho fatto in tempo a rispondervi.
    Provo il codice e poi vi faccio sapere, nel frattempo grazie mille

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    361

    Infinitamente grazie...

    Grazie carissimo Boolean
    funziona alla grande, ringrazio anche .:Francesco 96: per l'aiuto
    vrclaudio

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.