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

Contribuez Pascal Discussion :

Comment changer les couleurs de lignes en fonction d'un champ 'Date' dans un DBgrid ? [FAQ]


Sujet :

Contribuez Pascal

  1. #1
    Membre éclairé
    Avatar de FOCUS77
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 680
    Points
    680
    Par défaut Comment changer les couleurs de lignes en fonction d'un champ 'Date' dans un DBgrid ?
    Bonjour tous le monde.

    Dès fois en a besoin de distinguer les ventes d'une journée des autres ventes.
    Pour cela en va utiliser trois couleurs bleue,rouge et verte.(car si on utilise uniquement 2 couleurs, le premier jour
    de la semaine va avoir la même couleur que le dernier de la semaine précédente).
    Et on insert 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
    procedure TForm1.DBGrid1PrepareCanvas(sender: TObject; DataCol: Integer;
      Column: TColumn; AState: TGridDrawState);
    begin
      
    if Ventes.FieldValues['DAT_VNT']<> Null then
    if Int((Date-Ventes.FieldValues['DAT_VNT'])/3)=((Date-Ventes.FieldValues['DAT_VNT'])/3) then
    dbgrid1.Canvas.Font.Color:=clblue;
    
    if Ventes.FieldValues['DAT_VNT']<> Null then
    if Int((Date-Ventes.FieldValues['DAT_VNT']+1)/3)=((Date-Ventes.FieldValues['DAT_VNT']+1)/3) then
    dbgrid1.Canvas.Font.Color:=clred;
    
    if Ventes.FieldValues['DAT_VNT']<> Null then
    if Int((Date-Ventes.FieldValues['DAT_VNT']+2)/3)=((Date-Ventes.FieldValues['DAT_VNT']+2)/3) then
    dbgrid1.Canvas.Font.color:=clgreen;
    
    end;
    merci à tous.

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,

    Merci pour le tuyau que vous fournissez à la communauté , mais je vais y ajouter quelques remarques:

    1. Pensez que vous vous adressez potentiellement à des personnes qui sont moins chevronnés que vous.
      Il faut indiquer que cette procédure doit être rattachée à l’évènement OnPrepareCanvas du contrôle DBGrid1 :
      • lors de la conception, depuis le concepteur visuel de la fiche
      • lors de l’exécution par code : DBGrid1.OnPrepareCanvas := DBGrid1PrepareCanvas;
      . Cette instruction pourra être intégrée dans le code appelé par l'évènement OnCreate de la fiche Form1.
    2. Pensez à fournir un code clair et concis en évitant des copier coller sources de bugs.
      Vous voulez afficher les lignes de 3 couleurs différentes en faisant une rotation en fonction de la date. Cela peut s'écrire plus simplement et comme suit :
      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.DBGrid1PrepareCanvas(sender: TObject; DataCol: Integer;
        Column: TColumn; AState: TGridDrawState);
      var
        FontRowColor: TColor;
      begin
        if Ventes.FieldValues['DAT_VNT'] <> Null then
        begin
          case Trunc(Ventes.FieldValues['DAT_VNT']) mod 3 of
            0: FontRowColor := clBlue;
            1: FontRowColor := clred;
            2: FontRowColor := clgreen;
          end;
          dbgrid2.Canvas.Font.Color := FontRowColor;
        end;
      end;
    Philippe.

Discussions similaires

  1. Comment changer les couleurs
    Par bigrb dans le forum Tcl/Tk
    Réponses: 1
    Dernier message: 10/07/2009, 17h34
  2. [JTable] Comment Changer la couleur 1 ligne sur 2
    Par MeHo_ dans le forum Composants
    Réponses: 7
    Dernier message: 07/01/2008, 02h10
  3. Comment changer les couleurs des lignes avec displaytag
    Par rlnd23 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/10/2006, 13h52
  4. [phpBB] Comment changer les couleurs
    Par ludolecho dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 19/05/2005, 08h20

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