Remplir une ListView et mettre certains textes de colonnes en couleurs
cs_tolt
Messages postés269Date d'inscriptionmardi 17 décembre 2002StatutMembreDernière intervention 4 avril 2019
-
9 févr. 2006 à 10:07
gbegreg
Messages postés9Date d'inscriptionjeudi 17 juillet 2003StatutMembreDerniè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 ???????????
gbegreg
Messages postés9Date d'inscriptionjeudi 17 juillet 2003StatutMembreDerniè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...