Remplir une ListView et mettre certains textes de colonnes en couleurs

cs_tolt Messages postés 269 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 4 avril 2019 - 9 févr. 2006 à 10:07
gbegreg Messages postés 9 Date d'inscription jeudi 17 juillet 2003 Statut Membre Dernière intervention 1 mars 2012 - 28 déc. 2006 à 19:18
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

gbegreg Messages postés 9 Date d'inscription jeudi 17 juillet 2003 Statut Membre Dernière intervention 1 mars 2012
28 déc. 2006 à 19:18
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.
0
Rejoignez-nous