Changer la couleur d'un Stringgrid

Signaler
Messages postés
24
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
13 juillet 2011
-
Messages postés
4
Date d'inscription
lundi 18 mai 2009
Statut
Membre
Dernière intervention
9 octobre 2009
-
Bonjour,


J’ai un problème pour l’utilisation d’un Stringgrid si quelqu’un peut m’aider,


Je veux que les valeurs dans certaines cellules (dans l’exécution bien sûre) soient de couleur différentes par exemple en rouge,


J’attends vos aides.

3 réponses

Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with StringGrid1.Canvas do // Avec le canevas de ton stringgrid
begin
Brush.Color := clRed; // Couleur rouge pour l'exemple.
Rectangle(Rect); // Rect définit le rectangle de la cellule sur le canevas.
end;
end;

A lier à l'évènement OnDrawCell du TStringGrid.

Bien que souvent méprisés, ces évènements sont bien utiles des fois.

Cordialement, Bacterius !
Messages postés
24
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
13 juillet 2011

Merci Bacterius,


Mais je veux que certaines cellules soient coloriées non pas toutes les cellules du Stringgrid.
Messages postés
4
Date d'inscription
lundi 18 mai 2009
Statut
Membre
Dernière intervention
9 octobre 2009

C'est à toi de poser les conditions en utilisant ACol et ARow pr determiner les cellules que tu veux colorer.En reprenant en partie l'ex de Bacterius

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;

Rect: TRect; State: TGridDrawState);

var st:String;
      dx,dy:Integer;
begin

  with StringGrid1.Canvas do // Avec le canevas de ton stringgrid

  begin
   st:=Cells[Acol,ARow];
   dx:=(Rect.Right-(Rect.Left+TextExtent(St).Cx)) Div 2;       // Centrer Horizontalement le texte ds Rect
   dy:=(Rect.Bottom-(Rect.Top+TextExtent(St).Cy)) Div 2;   // Centrer Verticalement le texte ds Rect
   If ACol>0 then //  Les colonnes autres que la 1ere seront de couleur jaune et les textes Blues
     begin
       Font.Color:=clBlue;  //Couleur du texte Bleue


       Brush.Color:=clInfoBK;  //Couleur de fond Jaune


     end else // La première colonne sera de couleur Gris Argent et le texte Noir
     begin

       Font.Color:=clBlack;  // Couleur du texte Noire

       Brush.Color:=clSilver; // Couleur de fond Gris Argent

     end;

     FillRect(Rect);
     TextOut(Rect.Left+Dx,Rect.Top+Dy,St);
   end;
end;

RESORBAK