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.
