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

Bases de données Delphi Discussion :

Des couleurs, des collones, un DBGRID, et une crise de nerfs


Sujet :

Bases de données Delphi

  1. #1
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 017
    Points : 308
    Points
    308
    Par défaut Des couleurs, des collones, un DBGRID, et une crise de nerfs
    Hello,

    Je change les couleurs de mon DBGrid en fonction de ce qu'il ya dedans avec 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
    If gdSelected In State Then
                           Begin
                           TDBGrid(Sender).Canvas.Brush.Color := clSilver    {défini la couleur de la cellule active }
                           End
                           Else
                           if Column.Index > 3 then  {IF QUI TESTE LA COULEUR A METTRE EN FONCTION DE LA VALEUR}
                                                Begin
                                                if Column.Field.Asstring = 'Auditorium' then TDBGrid(Sender).Canvas.Brush.Color := clskyblue
                                                else
                                                if Column.Field.Asstring = 'Salle des fêtes' then TDBGrid(Sender).Canvas.Brush.Color := clsilver
                                                else
                                                if Column.Field.Asstring = 'Foyer' then TDBGrid(Sender).Canvas.Brush.Color := clMoneygreen
                                                else
                                                if Column.Field.Asstring = 'Salle d exposition' then TDBGrid(Sender).Canvas.Brush.Color := clteal
                                                else
                                                if Column.Field.Asstring = 'Salle du conseil' then TDBGrid(Sender).Canvas.Brush.Color := clcream
                                                else
                                                {TDBGrid(Sender).Canvas.Brush.Color := clWhite;  {défini la couleur de la cellule qui n'a pas de valeur}
                                                end;
    TDBGrid(Sender).DefaultDrawColumnCell(rect,datacol,column,state);
    end; {FIN DE procedure DBGrid1DrawColumnCell}
    Comme on le voit au début du code on s'intéresse à ce qu'il ya dans la quatrième collone du DBGRID et c'est en fonction de ce qu'on y touve que le fond de cette colonne change de couleur.

    Il y a une autre partie du code qui s'occupe de faire varier la couleur des colonnes 4,5,6,7,8,9,10,11 et 12 en fonction du chiffre qui s'y trouve.

    par contre les collones 0,1,2 et 3 ne changent pas de couleur (pour le moment).

    Ce que je voudrais faire c'est que les collones 0,,1,2 et 3 changent de couleur en fonction de ce qu'on trouve dans la colonne 4.

    Je ne sais pas comment faire ca !

  2. #2
    Inactif  

    Inscrit en
    Juillet 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 46
    Points : 135
    Points
    135
    Par défaut Couleurs
    Je ne suis pas un spécialiste du DBgrid mais à lire ton code tu ne traites que le cas ou index>3 pas lles colonnes 1,2,3

    L'expérience que j'ai est de changer les couleurs dans les drawitems de la GRID

    John

  3. #3
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 017
    Points : 308
    Points
    308
    Par défaut ...
    oui je ne traite que index > 3, mais c'est parceque je ne m'intéresse qu'a ce qui a dans la collone 4, mais je veux que les cellules qui sont dans les collones 0,1,2,3 soient dans la même couleur que dans la 4.

    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    col 0           col1            col2            col3           col4              col5    
    blue            blue            blue           blue           auditorium     normal
    green           green           green           green           foyer             normal
    Comme on voir dans l'exemple les col 0,1,2,3 prennent la même couleur en fonction de ce qu'il y a dans 4 alors que dans mon code actuel il n'y a que la colonne 4 qui change de couleur en fonction de ce qui s'y trouve.

  4. #4
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut Re: ...
    Citation Envoyé par puce_84
    mais je veux que les cellules qui sont dans les collones 0,1,2,3 soient dans la même couleur que dans la 4.
    La grille dessine ses cellules une par une et ligne par ligne. Ce qui veut dire que la cellule de la colonne 1 de la ligne x est dessinée avant la cellule 4 de la même ligne.

    Ce qui fait que pour peindre la grille comme tu veux le faire, il te faudra dessiner la grille normalement, c'est à dire en donnant aux cellules de la colonne 4 les couleurs que tu veux qu'elles aient et ensuite forcer la grille à se redessiner (repaint).

    Qu'est ce que tu en penses ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 40
    Points : 35
    Points
    35
    Par défaut
    Voici ma technique qui consiste a redessiner les cellules avec l'évènement ondrawcolumnCell :
    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
    //****************************
    with (sender as TDBGRID).canvas do
         begin
         if (Datacol <= 4 ) then
            begin
            if (sender as Tdbgrid).columns[4].field.asstring= .... then
               brush.color := .....
            else
            if (sender as Tdbgrid).columns[4].field.asstring = .... then
               brush.color := .....
            else
              .....
            fillrect(rect); // remplie le rect avec la couleur du brush
            textrect(rect,rect.left +2 ,rect.top+2,column.field.asstring); // ecrit la valeur de la cellule dans un rectangle correspondant a la cellule sans deborder
            end;
         end;

    [Balise code ajoutée par King Kaiser]

  6. #6
    Membre expérimenté
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Points : 1 339
    Points
    1 339
    Par défaut
    Il faut accéder à la zone correspondante dans le dataset :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // traitement des colonnes 0 à 3 en fonction de la colonne 4
    if (Column.Index >= 0) and (Column.Index <= 3) then
    begin
      if TDBGrid(Sender).DataSource.DataSet.FieldByName('zone de la colonne 4').AsString = '' then
        ...
      else
        ...
    end;
    Bloon
    A lire : Les règles du club
    Delphi : La FAQ - Articles

Discussions similaires

  1. Des dates, des couleurs et une somme.
    Par Yepazix dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/01/2011, 01h16
  2. Réponses: 0
    Dernier message: 24/04/2008, 22h53
  3. [VB] gestion des couleurs des variables de type string
    Par landry005 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/03/2006, 14h36
  4. Couleur de celulles de DBGRid selon une condition.
    Par abdelghani_k dans le forum Bases de données
    Réponses: 3
    Dernier message: 31/10/2005, 12h17
  5. couleur des textes des boutons
    Par mqsi dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 14/10/2005, 14h59

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