Listview et couleur ..... [Résolu]

Messages postés
2674
Date d'inscription
vendredi 25 janvier 2002
Dernière intervention
6 février 2013
- - Dernière réponse : DeAtHCrAsH
Messages postés
2674
Date d'inscription
vendredi 25 janvier 2002
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
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
759
Date d'inscription
vendredi 21 mars 2003
Dernière intervention
1 octobre 2009
3
Merci
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 ]

Merci cs_Kenavo 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de cs_Kenavo
Messages postés
2674
Date d'inscription
vendredi 25 janvier 2002
Dernière intervention
6 février 2013
0
Merci
Ca roule impec, merci Kenavo.

Shell
Commenter la réponse de DeAtHCrAsH

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.