Listview et couleur .....

Résolu
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013 - 28 juin 2005 à 14:16
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013 - 29 juin 2005 à 10:20
Lu all,

Je dispose d'un TListView utilisé en vsReport.
J'aimerai faire 2 choses dessus :

1 - Une ligne sur deux doit etre verte
2 - Lorsque l'utilisateur selectionne une ligne, celle ci doit avoir une couleur de fond rouge et une couleur de police blanche.

Merci pour avance.

Shell

2 réponses

cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
29 juin 2005 à 09:01
Salut,



Pour mettre de la couleur dans un TListView en mode vsReport, on peut utiliser l'évènement OnCustomDrawItem



const

Couleur1 = $C0FFC0;

Couleur2 = $FFFFFF;

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;

Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);

begin

if Item.Index mod 2 = 0 then

Sender.Canvas.Brush.Color := Couleur1

else

Sender.Canvas.Brush.Color : = Couleur2;

DefaultDraw := True;

end ;




Pour la couleur de sélection le plus simple est de modifier la couleur système (clHighLight)





Si tu veux tout faire toi-même, il faut utiliser l'évènement OnDrawItem (avec OwnerDraw = TRUE)



procedure TForm1.ListView1DrawItem(Sender: TCustomListView;

Item: TListItem; Rect: TRect; State: TOwnerDrawState);

var

i,Colon : Integer;

begin

if odselected in State then

begin

Sender.Canvas.Brush.Color := clRed ;

Sender.Canvas.Font.Color := clWhite;

end

else

if Item.Index mod 2 = 0 then

Sender.Canvas.Brush.Color := Couleur1

else

Sender.Canvas.Brush.Color : = Couleur2;



Sender.Canvas.Fillrect(Rect);

Sender.Canvas.TextOut(Rect.Left+2,Rect.Top+1,Item.Caption);



Colon
:= 0 ;

for i: = 0 to Item.Subitems.count - 1 do

begin


Colon
:=
Colon
+ ListView1.Column[i].Width;

Sender.Canvas.TextOut(
Colon
+2,Rect.Top+1,Item.Subitems[i]);

end ;

end;





A la louche et en première approche !



Ken@vo
<hr size ="2" width="100%">Code, Code, Codec !




http://noepatents.eu.org/

[%3C/body ]
3
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
29 juin 2005 à 10:20
Ca roule impec, merci Kenavo.

Shell
0
Rejoignez-nous