OVH Cloud OVH Cloud

ListView1 - Caractère

3 réponses
Avatar
Ingrid
Hello Tout le monde,

J'ai un petit problème avec listview. J'insère des données dans une listview
et je souhaite avoir des lignes en Gras (Bold), en couleur etc......comment
faire ?

Merci d'avance
Ingrid

3 réponses

Avatar
Jacques93
Bonjour Ingrid,
Ingrid a écrit :
Hello Tout le monde,

J'ai un petit problème avec listview. J'insère des données dans une listview
et je souhaite avoir des lignes en Gras (Bold), en couleur etc......comment
faire ?

Merci d'avance
Ingrid




Gras et couleur d'avant plan, c'est possible, mais etc ... : pas
d'origine, il faudrait utiliser un OwnerDrawn ListView :

http://www.elitevb.com/content/01,0048,01/02.aspx



Pour le Gras et la Couleur :
--------------------------

Private Sub Form_Load()
Dim itmX As ListItem
Dim i As Integer, j As Integer

With Me.ListView1
.View = lvwReport
.GridLines = True
.FullRowSelect = True

.ColumnHeaders.Add , , "Col1"
.ColumnHeaders.Add , , "Col2"
.ColumnHeaders.Add , , "Col3"

Set itmX = .ListItems.Add(, , "Ligne 1")
itmX.ForeColor = vbRed
itmX.Bold = True
itmX.SubItems(1) = "bbbb"
itmX.SubItems(2) = "cccc"

Set itmX = .ListItems.Add(, , "Ligne 2")
itmX.Bold = False
itmX.ForeColor = vbGreen
itmX.SubItems(1) = "dddd"
itmX.SubItems(2) = "eeee"

Set itmX = .ListItems.Add(, , "Ligne 3")
itmX.Bold = True
itmX.ForeColor = vbBlue
itmX.SubItems(1) = "ffff"
itmX.SubItems(2) = "gggg"

For i = 1 To .ListItems.Count
For j = 1 To .ColumnHeaders.Count - 1
.ListItems(i).ListSubItems(j).Bold = _
.ListItems(i).Bold
.ListItems(i).ListSubItems(j).ForeColor = _
.ListItems(i).ForeColor
Next j
Next i
End With

End Sub


--
Cordialement,

Jacques.
Avatar
Ingrid
Merci Jacques. Ton code marche, mais qd je l'execute avec mes column j'ai un
message erreur au niveau des FOR qui dit:"Index out of bounds".

Tu peux aider.
Merci d'avance
Kisses
Ingrid

"Jacques93" a écrit :

Bonjour Ingrid,
Ingrid a écrit :
> Hello Tout le monde,
>
> J'ai un petit problème avec listview. J'insère des données dans une listview
> et je souhaite avoir des lignes en Gras (Bold), en couleur etc......comment
> faire ?
>
> Merci d'avance
> Ingrid
>

Gras et couleur d'avant plan, c'est possible, mais etc ... : pas
d'origine, il faudrait utiliser un OwnerDrawn ListView :

http://www.elitevb.com/content/01,0048,01/02.aspx



Pour le Gras et la Couleur :
--------------------------

Private Sub Form_Load()
Dim itmX As ListItem
Dim i As Integer, j As Integer

With Me.ListView1
.View = lvwReport
.GridLines = True
.FullRowSelect = True

.ColumnHeaders.Add , , "Col1"
.ColumnHeaders.Add , , "Col2"
.ColumnHeaders.Add , , "Col3"

Set itmX = .ListItems.Add(, , "Ligne 1")
itmX.ForeColor = vbRed
itmX.Bold = True
itmX.SubItems(1) = "bbbb"
itmX.SubItems(2) = "cccc"

Set itmX = .ListItems.Add(, , "Ligne 2")
itmX.Bold = False
itmX.ForeColor = vbGreen
itmX.SubItems(1) = "dddd"
itmX.SubItems(2) = "eeee"

Set itmX = .ListItems.Add(, , "Ligne 3")
itmX.Bold = True
itmX.ForeColor = vbBlue
itmX.SubItems(1) = "ffff"
itmX.SubItems(2) = "gggg"

For i = 1 To .ListItems.Count
For j = 1 To .ColumnHeaders.Count - 1
.ListItems(i).ListSubItems(j).Bold = _
.ListItems(i).Bold
.ListItems(i).ListSubItems(j).ForeColor = _
.ListItems(i).ForeColor
Next j
Next i
End With

End Sub


--
Cordialement,

Jacques.



Avatar
Jacques93
Bonsoir Ingrid,
Ingrid a écrit :
Merci Jacques. Ton code marche, mais qd je l'execute avec mes column j'ai un
message erreur au niveau des FOR qui dit:"Index out of bounds".

Tu peux aider.
Merci d'avance
Kisses
Ingrid




As tu des colonnes dont le contenu est vide (même sur un seule ligne),
comme ça, par exemple :

http://cjoint.com/?fAv2DnArvK

Tu peux reproduire l'erreur avec le code du post précédent en mettant en
remarque les lignes qui renseignent les SubItems :

[...]
Set itmX = .ListItems.Add(, , "Ligne 2")
itmX.Bold = False
itmX.ForeColor = vbGreen
* ==> 'itmX.SubItems(1) = "dddd" <== *
* ==> 'itmX.SubItems(2) = "eeee" <== *

[...]

Deux solutions, soit tu mets :

itmX.SubItems(n) = ""

quand la colonne n'a pas de valeur, sois tu mets :

On Error Resume Next

avant les boucles For

On Error Resume Next
For i = 1 To .ListItems.Count
For j = 1 To .ColumnHeaders.Count - 1
.ListItems(i).ListSubItems(j).Bold = _
.ListItems(i).Bold
.ListItems(i).ListSubItems(j).ForeColor = _
.ListItems(i).ForeColor
Next j
Next i
On Error GoTo 0


Les boucles For permettent de mettre toute une ligne avec les mêmes
attributs (gras, couleur), mais ce n'est pas obligatoire.

--
Cordialement,

Jacques.