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
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 ...
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Salut
As-tu pensé à regarder dans la FAQ ? Non ?
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 : 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
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
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
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager