mon pb ??jarrive pas à coloré les lignes de mon dbgrid et cela ligne par ligne qc a d ligne sans couleurs et autre avec une autre couleur et merçi
mon pb ??jarrive pas à coloré les lignes de mon dbgrid et cela ligne par ligne qc a d ligne sans couleurs et autre avec une autre couleur et merçi
Utilise l'évènement OnDrawColumnCell de ta grille et adapte cet exemple
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 procedure TFrom1.GrilleDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin with TDBGrid(Sender) do begin if Column.ReadOnly then begin Canvas.Brush.Color := clred; if (State = [gdSelected..gdFocused]) then begin Canvas.Brush.Color := clHighlight; Canvas.Font.Color := clHighlightText; end; end; DefaultDrawColumnCell ( Rect,DataCol, Column, State); end; end;
Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
Aymond d'Alost
Bonjour.
Voici ce que j'utilise :
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 procedure TFichePrincipale.GrilleDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); Var S : String; SC, X, Y : Integer; begin If (ACol = 0) Then With Grille.Canvas Do begin If Not (gdSelected In state) then begin Pen.Style:=psClear; Brush.Style:=bsSolid; Brush.Color:=clWhite; Rectangle(Rect.Left,Rect.Top,Rect.Right,Rect.Bottom); end; s:=Grille.Cells[ACol,ARow]; x:=2+Rect.Left; y:=1+Rect.Top+(Rect.Bottom-Rect.Top-TextHeight(s))div 2; Font.Style:=[fsBold]; TextOut(x,y,s); Pen.Style:=psSolid; end; end;
Rien n'est moins sur que l'incertain : Pierre DAC
ll faut adapter l'exemple.Envoyé par redouane71
Moi, je ne colorie que les colonnes en lecture seule.
Pour colorier une rangée sur deux ce n'est pas sur la colonne qu'il faut faire un test mais sur la rangée.
Il te faut donc un test sur la rangée, or il ne me semble pas que la DBGrid te fournisse ce renseignement. Tu dois donc soit faire le test via une valeur de ton ensemble de donnée
Où NUM_ROW est un champ que tu auras ajouté et valorisé pour gérer ce cas.
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 procedure TForm1.GrilleDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin with TDBGrid(Sender) do begin if Odd( TDBGrid(Sender).DataSource.DataSet.FieldByName('NUM_ROW').AsInteger) then begin Canvas.Brush.Color := clred; if (State = [gdSelected..gdFocused]) then begin Canvas.Brush.Color := clHighlight; Canvas.Font.Color := clHighlightText; end; end; DefaultDrawColumnCell ( Rect,DataCol, Column, State); end; end;
Tu peux aussi essayer "RecNo"
qui suivant les bases et les ensembles utilisés (TTable, TQuery, TClientDataSet, etc..) fonctionne parfois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 TDBGrid(Sender).DataSource.DataSet.RecNo
Tu peux aussi essayer "Row"
soit trouvé une autre solution, par exemple surchargée TDBGrid pour laisser apparaître une variable ou pour la fournir à un nouveau type d'évènement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ... if Odd(TCustomGrid(Sender).Row) then ...
P.S : je te suggère de poster ce type de message dans le forum et non en MP
Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
Aymond d'Alost
Salut,
Voilà ce que j'utilise pour différencier 1 ligne sur 2 (fond de cellule différent)
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 procedure Tform1.CRDBMyGridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin //Coloration du fond de ligne 1 sur 2 (si ligne non selectionnee) if not(gdSelected in State) then if ( (CRDBMyGrid.DataSource.DataSet.RecNo MOD 2) = 0 ) then CRDBMyGrid.Canvas.Brush.Color:= $00E4E4E6; //Gris clair //Execution normale de l'affichage : CRDBMyGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State); end;
La réponse est dans la
http://delphi.developpez.com/faq/?pa...leurstringgrid
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
-----------------------
Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
Usus magister est optimus
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