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

Langage Delphi Discussion :

Colorer une cellule particulière d'un TDrawGrid


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Points : 182
    Points
    182
    Par défaut Colorer une cellule particulière d'un TDrawGrid
    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

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 464
    Points : 24 885
    Points
    24 885
    Par défaut
    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

  3. #3
    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

    Citation Envoyé par colorid Voir le message
    Quelqu'un peut-il me proposer un exemple ?
    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.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 119
    Points : 115
    Points
    115
    Par défaut
    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

    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);
    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
    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;
    Bon, ce n'est peut être pas la meilleur solution, mais ça fonctionne pas mal
    Jeankiki

Discussions similaires

  1. colorer une cellule de striggrid
    Par malikakika dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/06/2008, 10h31
  2. coloré une cellule d'un treeview
    Par awalter1 dans le forum GTK+ avec Python
    Réponses: 2
    Dernier message: 19/05/2008, 14h31
  3. Comment colorer une cellule d'une StringGrid
    Par Annibal dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/05/2008, 12h35
  4. Colorer une cellule précise d’une TStringGrid
    Par gilardino dans le forum Débuter
    Réponses: 1
    Dernier message: 16/04/2008, 12h10
  5. Colorer une Cellule depuis une Fonction Personnelle
    Par compte dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 18/03/2008, 19h38

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