Bonjour à tous,
Je sais que cette question a été posée une multitude de fois, mais je ne comprends toujours pas trop le concept de fonctionnement ...
Je dispose d'un StringGrid avec l'option goEditing à true.
Lorsqu'une case de mon StringGrid possède un nombre négatif, celui-ci doit se mettre en rouge, dans le cas contraire, je garde la couleur de texte initiale.
Mon problème (pour ne pas dire mes ...) est que je n'arrive pas à faire en sorte d'appliquer cette couleur rouge uniquement aux nombres négatifs ! Dès que j'ai un nombre négatif, il est bien en rouge, mais toutes les autres valeurs de ma StringGrid se mettent également en rouge.
Dans un premier temps, j'ai essayé ce code :
Celà me met tout en rouge dès qu'un nombre négatif est trouvé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if AnsiContainsStr(StringGrid1.Cells[ACol,ARow],'-') then begin StringGrid1.Font.Color:=clRed; StringGrid1.Brush.Color:=clWhite; StringGrid1.Canvas.FillRect(Rect); StringGrid1.Canvas.TextOut(Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]); end; end;
J'ai donc essayé celui ci :
Là, le StringGrid se rafraichi sans cesse sans pour autant faire ce changement de couleur! (scintillement ...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if AnsiContainsStr(StringGrid1.Cells[ACol,ARow],'-') then begin StringGrid1.Font.Color:=clRed; StringGrid1.Brush.Color:=clWhite; StringGrid1.Canvas.FillRect(Rect); StringGrid1.Canvas.TextOut(Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]); end else begin StringGrid1.Font.Color:=ClBlack; StringGrid1.Brush.Color:=clWhite; StringGrid1.Canvas.FillRect(Rect); StringGrid1.Canvas.TextOut(Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]); end; end;
Quelque chose m'échappe dans la logique de programmation, mais je ne sais pas quoi![]()
J'espère que vous pourrez m'expliquer mon soucis et aussi me guider afin de bien (mieux) maîtriser cet événement !
Merci à tous
Partager