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

DeAtHCrAsH 2674 Messages postés vendredi 25 janvier 2002Date d'inscription 6 février 2013 Dernière intervention - 28 juin 2005 à 14:16 - Dernière réponse : DeAtHCrAsH 2674 Messages postés vendredi 25 janvier 2002Date d'inscription 6 février 2013 Dernière intervention
- 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
cs_Kenavo 759 Messages postés vendredi 21 mars 2003Date d'inscription 1 octobre 2009 Dernière intervention - 29 juin 2005 à 09:01
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_Kenavo
DeAtHCrAsH 2674 Messages postés vendredi 25 janvier 2002Date d'inscription 6 février 2013 Dernière intervention - 29 juin 2005 à 10:20
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.