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 :

Changer la couleur des lignes d'un dbGrid avec condition


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    agent de fisc(les impots)
    Inscrit en
    Juillet 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : agent de fisc(les impots)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 427
    Points : 111
    Points
    111
    Par défaut Changer la couleur des lignes d'un dbGrid avec condition
    salut
    jai une table client(code,nom,prenom,adresse)
    je voudrer colorer en rouge seulement les enregistrement(ligne de dbgrid) qui en un nom egale a le contenue d'un edit.text.
    merci bien

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    un peu de recherche dans
    FAQ
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre habitué

    Inscrit en
    Août 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 253
    Points : 197
    Points
    197
    Par défaut
    Bonjour

    Voici un 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 TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
     
        begin
            if PA.FieldByName('Manque').AsInteger = 0 then
            begin
            DBGrid1.Canvas.Brush.Color:= cllime;
            DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
            end;
     
            if (PA.FieldByName('Manque').AsInteger <> 0) and (PA.FieldByName('Coupe').Asstring <> '')  then
            begin
            DBGrid1.Canvas.Brush.Color:= Clred;
            DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
            end;
     
        end;
    end;

  4. #4
    Inactif
    Inscrit en
    Février 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 46
    Points : 46
    Points
    46
    Par défaut Une idée..
    Citation Envoyé par kroma23 Voir le message
    salut
    jai une table client(code,nom,prenom,adresse)
    je voudrer colorer en rouge seulement les enregistrement(ligne de dbgrid) qui en un nom egale a le contenue d'un edit.text.
    merci bien
    Voici la réponse:
    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
     
     
    Const Couleur_De_Selection=clBlue;
            Couleur_1=clWhite;
            Couleur_2=clRed;
     
    procedure DrawGRID(Valeur TEdit;Const MyGrid:TDBGrid;Const State:TGridDrawState;
              Const Rect: TRect; DataCol: Integer; Column: TColumn);
    begin
    with MyGrid do
     begin
     if gdSelected in State
         then begin
        Canvas.Brush.Color := Couleur_De_Selection
              end
         else begin
         if DataSource.DataSet['nom']=Valeur.Text
             then Canvas.Brush.Color := Couleur_2
             else Canvas.Brush.Color := Couleur_1
              end;
     DefaultDrawColumnCell(rect,datacol,column,state);
     end
    end;
    puis dans l'evènnement :
    essayez d'appelez la procédure comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     DrawGRID(edit1,DBGrid,State,Rect,DataCol,Column)
     // où "edit1" contient la valeur recherchée..
    a+
    N'oublie pas ,
    au lieu de faire ou
    et efin !! sinon, en reste toujours ..

  5. #5
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 156
    Points : 62
    Points
    62
    Par défaut
    salut
    j'ai le meme problème , mais enfin j'ai trouvé ce que cherche,mais il ya 2 problèmes
    pour le dernier code
    1-est ce qu'il est possible d'appeler la procedure DrawGRID à partir d'un evènement Onclick d'un TButton (avec quels paramètres)
    2-lorsque je cherche une chaine de caractère ,il ne marche pas, mais lorsque je cherche une valeur (entier) tout va bien
    et merci d'avance

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut
    Pour ton point deux, j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PA.FieldByName('Manque').AsInteger
    pour des integer et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PA.FieldByName('MaChaineDeCaractere').AsString
    pour les chaines de caractères.

    Enjoy

  7. #7
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 156
    Points : 62
    Points
    62
    Par défaut
    merci infiniment pour votre reponse
    en fait j'ai essayé le 1er code mais j'ai pas compris c quoi le PA
    ...j'ai essayé le 2eme code avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      if DataSource.DataSet.fieldbyname('nom').asstring=Valeur.Text
    mais toujours ne marche pas
    pouvez vous m'aider SVP

  8. #8
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    PA c'est ,à priori, le nom d'une table ou d'une Query.

    Effectivement , sur différent en relisant différents sources , je viens de m'apercevoir que moi aussi j'utilise le nom de la table plutôt que
    DataSource.DataSet. etc...

    Paresse ou mauvaise Habitude ou autre ?

    voici un 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
    procedure TCdeForm.ResumeDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
    case DataCol of
      2,3 : with (Sender as TDBGrid).Canvas do begin
            Brush.Color:=clWindow;
            if BlignesETAT_LIGNE.AsString='M' then Brush.Color:=clRed;
            if BlignesETAT_LIGNE.AsString='S' then Brush.Color:=clYellow;
            Font.Color:=clBlack;
            FillRect(Rect);
            TextOut(Rect.Left, Rect.Top,Column.Field.AsString);
          end;
      else Resume.DefaultDrawColumnCell(Rect,DataCol,Column,State);
    end; //CASE
    peut-être comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if DataSource.DataSet['nom'].asstring=Valeur.Text
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/05/2014, 22h31
  2. Changer la couleur des lignes dans une JXTable
    Par guimo26 dans le forum Composants
    Réponses: 1
    Dernier message: 17/03/2009, 18h40
  3. renommage des lignes d'un fichier avec condition
    Par dofre114 dans le forum Linux
    Réponses: 2
    Dernier message: 13/08/2007, 16h24
  4. Réponses: 3
    Dernier message: 10/04/2007, 18h09
  5. Comment changer les couleurs des lignes avec displaytag
    Par rlnd23 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/10/2006, 13h52

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