IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

couleur de font dans un dbgrid


Sujet :

Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut couleur de font dans un dbgrid
    salut tous j'ai un petit bout de code (qui ne marche pas lol)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TOperation.SMDBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
    if (Table1.FieldByName('Total').AsInteger < 0) then
        Canvas.Font.Color := clRed;
    end;
    voila je voudrais si possible avoir la couleur rouge sur la sommes qui se trouve dans la cellule de mon DBgrid
    une idée ?

  2. #2
    Membre régulier Avatar de djeckelle
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2004
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2004
    Messages : 87
    Points : 101
    Points
    101
    Par défaut
    Salut,

    Tu veux que le texte soit en rouge ou que la cellule soit surlignée en rouge ?

  3. #3
    Membre régulier Avatar de djeckelle
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2004
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2004
    Messages : 87
    Points : 101
    Points
    101

  4. #4
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Si ton SMDBGrid hérite de DBGrid, comme je le suppose, il doit te manquer un DefaultDrawColumnCell.

    Tu peux t'inspirer de cette Q/R de la FAQ: Comment dessiner des lignes de couleurs sur un DBGrid ?

    @+ Claudius

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut oui le texte
    Citation Envoyé par djeckelle Voir le message
    Salut,

    Tu veux que le texte soit en rouge ou que la cellule soit surlignée en rouge ?
    oui je veux que le texte

  6. #6
    Membre régulier Avatar de djeckelle
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2004
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2004
    Messages : 87
    Points : 101
    Points
    101
    Par défaut
    Salut, es tu aller voir les liens que nous t'avons indiqué?
    Car la réponse est dedans ...sur l'événement OnDrawCell de la grille

    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
    With Sender As TStringGrid Do With Canvas Do
      Begin
        { sélection de la couleur de fond }
        If gdFixed in State
          Then Brush.Color := clBtnFace
          Else If gdSelected In State
            Then Brush.Color := clNavy
            Else If Odd(ARow)
              Then Brush.Color := $FFE0FF
              Else Brush.Color := $FFFFE0;
        { Dessin du fond }
        FillRect(Rect);
        { Sélection de la couleur d'écriture }
        If gdSelected In State
          Then Font.Color:=clWhite
          //Une condition de test
          Else  if Cells[ARow,ACol] = 'Cellule 13'
           then Font.Color:=clred
           else Font.Color:=clBlack;
        { Dessin du texte }
        TextOut(Rect.Left,Rect.Top,Cells[ACol,ARow]);
      End;

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut marche pas
    Citation Envoyé par djeckelle Voir le message
    Salut, es tu aller voir les liens que nous t'avons indiqué?
    Car la réponse est dedans ...sur l'événement OnDrawCell de la grille

    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
    With Sender As TStringGrid Do With Canvas Do
      Begin
        { sélection de la couleur de fond }
        If gdFixed in State
          Then Brush.Color := clBtnFace
          Else If gdSelected In State
            Then Brush.Color := clNavy
            Else If Odd(ARow)
              Then Brush.Color := $FFE0FF
              Else Brush.Color := $FFFFE0;
        { Dessin du fond }
        FillRect(Rect);
        { Sélection de la couleur d'écriture }
        If gdSelected In State
          Then Font.Color:=clWhite
          //Une condition de test
          Else  if Cells[ARow,ACol] = 'Cellule 13'
           then Font.Color:=clred
           else Font.Color:=clBlack;
        { Dessin du texte }
        TextOut(Rect.Left,Rect.Top,Cells[ACol,ARow]);
      End;

    désolé mais le code que tu donne marche bien sur un stringgrid
    mais pas sur un Dbgrid

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 256
    Points : 41 643
    Points
    41 643
    Billets dans le blog
    64
    Par défaut
    Citation Envoyé par tarmo57 Voir le message
    désolé mais le code que tu donne marche bien sur un stringgrid
    mais pas sur un Dbgrid
    parcequ'il t'était difficile de remplacer ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Sender As TStringGrid Do With Canvas Do
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Sender As TDBGrid Do With Canvas Do

  9. #9
    Membre régulier Avatar de djeckelle
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2004
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2004
    Messages : 87
    Points : 101
    Points
    101
    Par défaut
    Citation Envoyé par tarmo57 Voir le message
    désolé mais le code que tu donne marche bien sur un stringgrid
    mais pas sur un Dbgrid
    Ha oui il y a du niveau là....désolée de ne pas avoir complètement mâché le travail

    SergioMaster merci je me sens moins seule sur ce coup là

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut Sergio oui la modif que tu fais est simple
    Citation Envoyé par SergioMaster Voir le message
    parcequ'il t'était difficile de remplacer ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Sender As TStringGrid Do With Canvas Do
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Sender As TDBGrid Do With Canvas Do
    mais la fonction d'un StringGrid et d'un DBGrid n'est pas la méme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    et pour DBGRID
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    donc pour un StringGrid
    Acol Arow et Rect pas de probléme .mais pour un DBGrid il y a d'autres modif !
    je regarde je cherche je suis dans débutant ,excusez moi
    je peux si tu veux en contre partie te parler du LRM40BM21 que je connais bien

  11. #11
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    As-tu regardé le lien vers la FAQ que je t'ai proposé ici ?

    Cela expose le principe de fonctionnement, tu devrais pouvoir en tirer quelque chose.

    @+ Claudius

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut merci
    Citation Envoyé par Cl@udius Voir le message
    Salut

    As-tu regardé le lien vers la FAQ que je t'ai proposé ici ?

    Cela expose le principe de fonctionnement, tu devrais pouvoir en tirer quelque chose.

    @+ Claudius
    oui je cherche merci clodius

  13. #13
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 256
    Points : 41 643
    Points
    41 643
    Billets dans le blog
    64
    Par défaut
    effectivement , il n'y a ni col,ni row dand le onDrawColumnCell on accède aux valeurs grace a la proprité column

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
       If gdSelected In State
          then Font.Color:=clWhite
          //Une condition de test
          Else  
        if Column.Field.asString='O'    // un exemple de test sur la valeur de la cellule
    {ou  if Table1.FieldByName('monchampTest').value=valeurrouge}       
           then Font.Color:=clred
           else Font.Color:=clBlack;
           TextOut(Rect.Left, Rect.Top,Column.Field.AsString);
    end;
    nota , le seul hic de ce code c'est pour les valeurs numériques qui se retouvreront cadrées à gauche (mais ça c'est une autre histoire )

  14. #14
    Membre régulier Avatar de djeckelle
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2004
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2004
    Messages : 87
    Points : 101
    Points
    101
    Par défaut
    Je ne pensais pas que trouver l'identifiant d'une colonne et d'une ligne serait un problème une fois que j'avais fournit l'algo et les attributs utiles.

  15. #15
    Membre régulier Avatar de djeckelle
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2004
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2004
    Messages : 87
    Points : 101
    Points
    101
    Par défaut
    Citation Envoyé par tarmo57 Voir le message
    je peux si tu veux en contre partie te parler du LRM40BM21 que je connais bien

    Alors parles moi un peut de ce truc là ..je t'écoute je suis complètement débutante dans le domaine et j'aime me coucher moins bête le soir

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut avec tous de méme mes remerciments
    Citation Envoyé par djeckelle Voir le message
    Alors parles moi un peut de ce truc là ..je t'écoute je suis complètement débutante dans le domaine et j'aime me coucher moins bête le soir
    apellé plus communément les Rampes de Staline
    LRM
    Lance Rocquette Multiple
    40
    40 rocquettes
    BM21
    Chassi du camion russe

  17. #17
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 827
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 827
    Points : 13 570
    Points
    13 570
    Par défaut
    Fort intéressant!

    Aurait Peut-être plus sa place dans le forum Hardware --------,

Discussions similaires

  1. couleur de cellule dans un DBGRID
    Par tarmo57 dans le forum Débuter
    Réponses: 1
    Dernier message: 14/05/2013, 10h54
  2. Problème pour mettre une couleur de font dans un fieldset
    Par sophie_44 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 03/11/2010, 09h56
  3. Changer la couleur de "font" dans un objet de type "ImageFont" dans PIL
    Par KINENVEU dans le forum Calcul scientifique
    Réponses: 2
    Dernier message: 07/06/2007, 04h29
  4. Couleur de fonte dans Canvas
    Par Betcour dans le forum Delphi
    Réponses: 9
    Dernier message: 11/08/2006, 19h18
  5. Couleur des lignes dans DBGrid
    Par eddie dans le forum C++Builder
    Réponses: 5
    Dernier message: 21/06/2002, 19h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo