Remplir une ListView et mettre certains textes de colonnes en couleurs

Signaler
Messages postés
270
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
4 avril 2019
-
Messages postés
9
Date d'inscription
jeudi 17 juillet 2003
Statut
Membre
Dernière intervention
1 mars 2012
-
Bonjour,

Savez-vous comment faire en Delphi pour remplacer ce code ci-dessous VB très simple en Delphi. Voir même si possible un exemple tous simple pour remplir une ListView avec certains textes de colonnes en couleur.
Chose que je faisais en 2 lignes de codes en VB mais en Delphi ???????????

Grand Merci d'avance.

Code VB:
Set items = .ListView1.ListItems.Add(, , "Mon texte", 1, 1)
items.SubItems(1) = "Mon texte"
items.ListSubItems(1).Bold = True
items.ListSubItems(1).ForeColor = QBColor(4)

Code Delphi ???????????????????

1 réponse

Messages postés
9
Date d'inscription
jeudi 17 juillet 2003
Statut
Membre
Dernière intervention
1 mars 2012

Bonjour,

J'étais comme toi à la recherche d'une possibilité de coloriser ou de modifier la police de caractère d'une cellule spécifique d'un TListView. A force de chercher, j'ai trouvé la solution suivante : il faut ajouter le code suivant dans l'évènement OnAdvancedCustomDrawSubItem de la TListView (mon besoin était de coloriser le fond d'une cellule correpondant à un subitem) :

Sender.Canvas.Brush.Color := clWhite;
if subitem = 2 then
begin
  if strtointdef(Item.SubItems[1],0) >0 then
  begin
    Sender.Canvas.Brush.Color := TColor($00AA40);

  end
  else
  begin
    if strtointdef(Item.SubItems[1],0) <0 then
    begin
      Sender.Canvas.Brush.Color := TColor($AA0040);
    end
    else
    begin
      Sender.Canvas.Brush.Color := clWhite;
    end;
  end;
end;

Dans cet exemple, il faut une listview avec le style vsReport et au moins 3 colonnes. Si le chiffre contenu dans la 3 ème colonne est négatif, la cellule sera colorée en rouge. Si le chiffre est positif, la cellule sera vert et si le chiffre est nul, la cellule sera blanche.
Rappel de la gestion des TListView :
un item correspond à la ligne entière. La propriété caption de l'item permet de renseigner la première colonne. Pour alimenter la deuxième colonne, il faut passer par item.subitem[0], puis item.subitem[1] pour la 3 ème colonne etc...

En espérant que cela te dépannes.