Comment colorier un stringgrid (autre méthode).

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 648 fois - Téléchargée 35 fois

Contenu du snippet

Procedure TForm1.Modifie_la_grille();
Var Str:String;
Ligne,Col:WORD;
Rect_cell:Trect;
Tab_color:array of Tcolor;

begin
SetLength (Tab_color, 200);
Tab_color[1] := clGreen;
Tab_color[2] := clRed;
Tab_color[3] := clYellow;
Tab_color[4] := clBlue;
Tab_color[5] := RGB(100, 100, 255);


//Cet exemple montre comment modifier les cellules d'un Stringgrid.
for Ligne:=1 to 5 do begin
//Cette ligne est supprimée pour la démonstration.
//StringGrid1.Canvas.Brush.Color := Tab_color[Ligne];

for Col:=1 to 2 do begin

//Retourne le texte contenu de la cellule.
//On peut également écrire directement le texte sans le relire.
Str:=StringGrid1.Cells[Col,Ligne];

// ATTENTION !
//StringGrid1.CellRect(Col,Ligne); Retourne la dimension de la cellule VISIBLE sélectionnée.
//Utiliser StringGrid1.ColWidths[Col] pour justifier un texte au centre ou à droite
Rect_cell:=StringGrid1.CellRect(Col,Ligne);

//Réécrit le texte de la cellule en haut et à gauche.
StringGrid1.Canvas.TextRect(Rect_cell,Rect_cell.Left, Rect_cell.Top,Str);

//Remplissage de la cellule par la couleur desirée.
StringGrid1.Canvas.Brush.Color := Tab_color[Ligne];

//Tracé de la bordure de la cellule dans la couleur desirée si nécessaire.
StringGrid1.Canvas.FrameRect(Rect_cell); // Bordure.

end;
end;
end;

procedure TForm1.cmd_ModifieClick(Sender: TObject);
begin
Modifie_la_grille();
end;

Conclusion :


Ouvrir un projet.
Ajouter un Stringgrid.
Ajouter un bouton.
Copier le code du bouton et celui de la procédure.
Run!

Les couleurs des cellules sont décalées volontairement.

HN.

A voir également

Ajouter un commentaire Commentaires
Messages postés
3
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
17 janvier 2003

salut,
comment appliquer ça a un dbgrid?
Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
1
Cela fonctionne effectivement, mais ce n'est pas du tout la bonne méthode. Car en procédant ainsi le dessin n'est pas conservé, donc si l'application est réduite ou si une application passe en premier plan, les couleurs seront effacées.

Pour modifier les couleurs d'une grille, il faut utiliser l'évènement OnDrawCell de la grille.

Le try...finally est inutile ici car tu n'a pas de ressources à libérer. De plus try...finally ne masque pas les exceptions comme le ferait un try..execpt.

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.