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.
Version imprimable
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.
Bonjour,
tu peux faire :
A+Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 procedure TForm1.FormCreate(Sender: TObject); begin Grille.Cells[1,1] := 'AAAA' ; Grille.Cells[1,2] := 'BBBB' ; Grille.Cells[2,1] := 'CCCC' ; Grille.Cells[2,2] := 'DDDD' ; end; { ================================================== } procedure TForm1.GrilleDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin If ((ARow = 2) And (ACol = 1)) Then Grille.Font.Color := ClRed Else Grille.Font.Color := ClBlack ; end;
Charly
bonjour
regardes cet exemple
http://www.phidels.com/php/index.php...63e6d96afd51a0
bonne journée
Merci Charly et Samy larson c’est presque la même chose,
Mais je veux que la coloration soit à l’exécution, par exemple programmer un boutton spécialement pour colorier des cellules qui se changent d’un exécution à un autre, car j’ai un calcul à faire pour déterminer les cellules que je doit les coloriées,
J’espère que j’étais clair et que vous pouvez m’aider.
Le calcul est-il fixe? (du genre StrToInt(Grille.Cells[ACol,ARow]) > StrToInt(Edit1.text))
Le calcul n’est pas fixe, j’ai un stringgrid qui contient 32 lignes et 32 colonnes, alors si je fait l’exécution pour la première fois je peux trouver par exemple que les cellules (1,2), (10,30), (16,3) et (4,31) doit être coloré, si je fait l’exécution pour la deuxième fois je peut trouvé d’autres cellules qui doivent être colorées.
Remarque : je veux que soit les cellules coloriées soit les valeurs qui se trouvent dans les cellules soit d’une autre couleur.
Il faut déclarer un tableau qui mémorisera la couleur de chaque cellule de ta grille, du moins au minimum un tableau pour stocker l'information sur chaque cellule.
Il faudrait avoir un mode édition qui te permet de sélectionné les cellules participants (ie OnCellClick) au calcul de façon à modifier le tableau et un mode calcul consistant à s'appuyer sur ce tableau (ie mode lecture) pour afficher la couleur ad hoc.
Ce qu'il y a à retenir du code de Charly910:
Cette fonction sera appelée par ton programme juste avant le dessin de chaque cellule de ta StringGrid. Dans son exemple, Charly910 a mis cette condition très simple:Code:
1
2
3
4
5
6
7 procedure TForm1.GrilleDrawCell( Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin If ((ARow = 2) And (ACol = 1)) Then Grille.Font.Color := ClRed Else Grille.Font.Color := ClBlack ; end;
qui fait que seule la cellule de la 2e ligne, 1ère colonne sera dessinée en rouge.Code:If ((ARow = 2) And (ACol = 1)) Then...
Il suffit de remplacer cette condition par ta condition à toi : à quelle condition veux-tu que ta cellule soit en rouge? comment déterminer si cette condition est vraie pour la cellule située en (ARow, ACol)?
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 var color1,color2:TColor; procedure TForm1.button1click; begin if valuer>0 then begin color1:=$FF0000;color1:=$FF00FF; end else begin color1:=$FFFF00;color1:=$FF0FFF; end end; procedure TForm1.GrilleDrawCell( Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin If ((ARow = 2) And (ACol = 1)) Then Grille.Font.Color := Color1 Else Grille.Font.Color := Color2 ; end;