Bonjour,
Je voudrai colorer des cellules particulières avec des couleurs de mon choix d'un TDrawGrid ou d'un TStringGrid.
Quelqu'un peut-il me proposer un exemple ?
Merci
Version imprimable
Bonjour,
Je voudrai colorer des cellules particulières avec des couleurs de mon choix d'un TDrawGrid ou d'un TStringGrid.
Quelqu'un peut-il me proposer un exemple ?
Merci
Tout est à base du OnDrawCell qui te fourni les coordonnées de la cellule et le rectangle qu'il faut remplir ... ensuite, c'est libre, c'est de l'écriture sur un canvas ... tu peux tout faire ... tu dois avoir des exemples sur le forum pour gérer le multiligne dans une DBGrid par exemple qui utilise ce principe via Windows.DrawText ...
Salut
As-tu pensé à regarder dans la FAQ ? Non ? :evil:
Nombre d'exemples bateaux d'utilisation de ce composant sont présents y compris la coloration de cellules: voir ici.
Salut,
Ce que tu peux faire par exemple, c'est remplir avec un ou plusieurs caractères les différentes cellules que tu veux coloriées et ensuite sur le OnDrawCell, tu redessinnes avec différentes couleurs suivant la lettre qu'il y a dans la cellule
Et afin de ne pas voir les lettres, tu ajoutes à la suite le code suivant.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 with (Sender as TStringGrid), Canvas do begin if gdFixed in State then begin Brush.Color := clBtnFace; end else begin if Cells[Acol, ARow] = 'A' then Brush.Color:= clBlack else Brush.Color:= clWhite; if Cells[ACol, ARow] = 'B' then Brush.Color:= clGreen else if Cells[Acol, ARow] = 'C' then Brush.Color:= $0087FF //clTeal; else if Cells[ACol,ARow] = 'D' then Brush.Color:= $CCCCCC; end; FillRect(Rect);
Bon, ce n'est peut être pas la meilleur solution, mais ça fonctionne pas mal :DCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 if gdFixed in State then begin //Font.Style:= [fsBold]; Font.Color:= clBlack; end else if gdSelected in State then begin Font.Color:= clBlack; end else Font.Style:= [fsBold]; if Cells[ACol, ARow] = 'B' then Font.Color:= clGreen else if Cells[ACol, ARow] = 'C' then Font.Color:= $0087FF //clTeal else if Cells[ACol, ARow] = 'A' then Font.Color:= clBlack else if Cells[ACol, Arow] = 'D' then Font.Color:= $CCCCCC; TextOut(Rect.Left +1, Rect.Top +1, Cells[ACol, ARow]); end;
Jeankiki