Colorer les lignes d'une stringgrid

cs_leprintemp Messages postés 6 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 9 mars 2012 - 1 mars 2012 à 22:40
cs_leprintemp Messages postés 6 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 9 mars 2012 - 9 mars 2012 à 12:16
bsr a tous;
je veux colorer une ligne d'une stringgrid a chaque changement d'une cellule, j'ai mis le code ci-dessous dans l'evenement OnDrawCell mais le changement de couleur s'applique que sur la cellule active et pour que le reste soit colorer je dois les selectionnees une par une, voici le code:

With Sender As TStringGrid Do With Canvas Do
  Begin
    If gdFixed in State
      Then Brush.Color := clBtnFace
      Else If gdSelected In State
        Then Brush.Color := clNavy
         else if Cells[4,arow]='Non' then Brush.Color := $FFE0FF
                  else Brush.Color := $FFFFE0;
    FillRect(Rect);
     If gdSelected In State
      Then Font.Color:=clWhite
      Else Font.Color:=clBlack;
    DrawText(Canvas.Handle, PChar(Cells[ACol,ARow]), -1, Rect ,
              DT_CENTER or DT_NOPREFIX or DT_WORDBREAK );
  End;

6 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
2 mars 2012 à 11:31
Bonjour,

Et si tu changeais tout simplement la propriété
GoRowSelect à true dans
Options de ton StringGrid ?


cantador
0
cs_leprintemp Messages postés 6 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 9 mars 2012
2 mars 2012 à 22:07
c'est bon j'ai trouvé la solution,
il suffit d'appeler StringGrid.Invalidate aprés le changement de contenu de la cellule.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
2 mars 2012 à 22:50
Bonsoir,

peux-tu nous donner le code complet que l'on puisse apprécier
le résultat ?


cantador
0
cs_leprintemp Messages postés 6 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 9 mars 2012
3 mars 2012 à 11:13
plus le code ci-dessus de OnDrawCell on ajouter dans la procedure qui change le contenue de la cellule la ligne:
StringGrid1.Invalidate; {pour redessiner la StringGrid1}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
4 mars 2012 à 15:39
bouh..
la méthode invalidate dans le OnDrawCell a pour conséquence
de déclencher un sautillement intempestif..
peut-être en ajoutant dans le OnCreate de la forme
StringGrig1.doublebuffered := true;

et puis je ne vois pas de :
je veux colorer une ligne d'une stringgrid



cantador
0
cs_leprintemp Messages postés 6 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 9 mars 2012
9 mars 2012 à 12:16
on ajouter dans la procedure qui change le contenue de la cellule la ligne:
StringGrid1.Invalidate; {pour redessiner la StringGrid1}
0
Rejoignez-nous