Colorer les lignes d'une stringgrid

Signaler
Messages postés
6
Date d'inscription
mercredi 30 mars 2011
Statut
Membre
Dernière intervention
9 mars 2012
-
Messages postés
6
Date d'inscription
mercredi 30 mars 2011
Statut
Membre
Dernière intervention
9 mars 2012
-
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;
A voir également:

6 réponses

Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
Bonjour,

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


cantador
Messages postés
6
Date d'inscription
mercredi 30 mars 2011
Statut
Membre
Dernière intervention
9 mars 2012

c'est bon j'ai trouvé la solution,
il suffit d'appeler StringGrid.Invalidate aprés le changement de contenu de la cellule.
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
Bonsoir,

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


cantador
Messages postés
6
Date d'inscription
mercredi 30 mars 2011
Statut
Membre
Dernière intervention
9 mars 2012

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}
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
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
Messages postés
6
Date d'inscription
mercredi 30 mars 2011
Statut
Membre
Dernière intervention
9 mars 2012

on ajouter dans la procedure qui change le contenue de la cellule la ligne:
StringGrid1.Invalidate; {pour redessiner la StringGrid1}