Changer la couleur d'un Stringgrid

codepvc Messages postés 24 Date d'inscription mercredi 29 octobre 2008 Statut Membre Dernière intervention 13 juillet 2011 - 4 mars 2009 à 11:39
Resorbak Messages postés 4 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 9 octobre 2009 - 22 mai 2009 à 04:33
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

Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
4 mars 2009 à 16:47
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 !
0
codepvc Messages postés 24 Date d'inscription mercredi 29 octobre 2008 Statut Membre Dernière intervention 13 juillet 2011
6 mars 2009 à 09:27
Merci Bacterius,


Mais je veux que certaines cellules soient coloriées non pas toutes les cellules du Stringgrid.
0
Resorbak Messages postés 4 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 9 octobre 2009
22 mai 2009 à 04:33
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
0
Rejoignez-nous