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 :

j'arrive pas à coloré mon string grid


Sujet :

Delphi

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut j'arrive pas à coloré mon string grid
    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

  2. #2
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    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

  3. #3
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut
    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

  4. #4
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Citation Envoyé par redouane71
    j'ia éssaiyé votre code mé ca n'a pas marché ,rien qu'une colone été coloré en rouge ...!
    ll faut adapter l'exemple.
    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

    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;
    NUM_ROW est un champ que tu auras ajouté et valorisé pour gérer ce cas.
    Tu peux aussi essayer "RecNo"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TDBGrid(Sender).DataSource.DataSet.RecNo
    qui suivant les bases et les ensembles utilisés (TTable, TQuery, TClientDataSet, etc..) fonctionne parfois.

    Tu peux aussi essayer "Row"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      ...
      if Odd(TCustomGrid(Sender).Row) then
       ...
    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.

    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

  5. #5
    JMN
    JMN est déconnecté
    Candidat au Club
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Un sur DEUX
    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;

  6. #6
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    "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

Discussions similaires

  1. j arrive pas à remplir mon tableau de String
    Par poulette3000 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 29/10/2007, 18h52
  2. Réponses: 2
    Dernier message: 02/12/2006, 20h13
  3. N'arrive pas à compiler mon fichier
    Par Séb@s dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 23/11/2006, 20h19
  4. Je n'arrive pas à acceder à mon fichier c'est La cata
    Par polianita dans le forum Access
    Réponses: 13
    Dernier message: 17/08/2006, 14h44
  5. Je n'arrive pas à terminer mon formulaire en PHP
    Par snakejl dans le forum Langage
    Réponses: 12
    Dernier message: 10/05/2006, 22h35

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