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 :

couleur ligne DBGrid delphi


Sujet :

Delphi

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 89
    Points : 49
    Points
    49
    Par défaut couleur ligne DBGrid delphi
    bonjour les amis

    mon problème c'est lorsque je clic sur un enregistrement d'un dbgrid
    je change la couleur de la ligne avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If DBGrid1.SelectedRows.CurrentRowSelected
      then Begin
         DBGrid1.Canvas.Brush.Color := clRed;//clSkyBlue;  // <- Couleur fond de ligne
         Column.Grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    sauf qu’après que je clic sur un autre enregistrement et sur le même dbgrid
    la couleur que j'ai donner au premier enregistrement disparaisse
    alors je veux cmt les lignes de mon dbgrid maintiennes leurs couleur

    même Apres que je sélectionne un autre, ou bien comment désactiver la ligne
    du dbgrid après avoir séléctionné.

    merci et j'éspere que vous maviez compris

  2. #2
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 405
    Points : 3 171
    Points
    3 171
    Par défaut
    Bonjour,

    pour mes StringGrid, j'ajoute une colonne 1 qui contient # ou ' ' selon que j'ai sélectionné ou désélectionné la ligne à la souris (la colonne peut être visible ou invisible comme on veut).

    Ensuite dans le OnDrawCell, je fais :

    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
    29
    With Sender As TStringGrid Do With Canvas Do
       Begin
         { sélection de la couleur de fond }
         If ((gdFixed in State) or (ARow = 0)) Then
            Begin
              Brush.Color := clBtnFace ;   // 1ere ligne
            End
         Else
            Begin
               If gdSelected In State Then     // ligne courante
                  Begin
                     Brush.Color := clNavy ;
                  End
               Else
                  Begin
                     If Cells[1,Arow]= '#' Then Brush.Color := clRed     // Ligne déjà sélectionnée
                                           Else Brush.Color := clLime ;  // Ligne non sélectionnée
                  End ;
            End ;
     
         { Dessin du fond }
         FillRect(Rect);
         { Sélection de la couleur d'écriture }
         If gdSelected In State
           Then Font.Color:=clWhite
           Else Font.Color:=clBlack;
         { Dessin du texte }
         TextOut(Rect.Left,Rect.Top,Cells[ACol,ARow]);
       End;
    Pour le DbGrid, je pense que tu peux faire un peu la même chose en ajoutant un champ à la table liée au DbGrid.

    C'est pas génial, mais pour le StringGrid ça marche bien !

    A+

    Charly

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 946
    Points : 123
    Points
    123
    Par défaut
    moi j'utilise l’événement OnDrawColumnCell et ça marche très bien voici l'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 TForm1.DBGDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
     
         if ((sender as Tdbgrid).DataSource.DataSet.fieldvalues['PRO']<>null)and((sender as Tdbgrid).DataSource.DataSet.fieldvalues['QTE']>0) then
             TDBGrid(Sender).Canvas.Brush.Color :=$00A6FFFF
        else
        if ((sender as Tdbgrid).DataSource.DataSet.STATE<>DSINSERT)and((sender as Tdbgrid).DataSource.DataSet.fieldvalues['PRO']<>null)and((sender as Tdbgrid).DataSource.DataSet.fieldvalues['QTE']<0) then
             TDBGrid(Sender).Canvas.Brush.Color :=$009B9BFF
        else  TDBGrid(Sender).Canvas.Brush.Color :=$00A6FFFF;
        if (gdSelected	 in state) then   TDBGrid(Sender).canvas.brush.color:=CLTEAL;
         TDBGrid(Sender).DefaultDrawColumnCell(rect,datacol,column,state);
    end;

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 196
    Points : 41 428
    Points
    41 428
    Billets dans le blog
    63
    Par défaut
    Bonjour ,

    La dbgrid a une posssibilité de sélectionner plusieurs lignes (option multiselect=true) c'est peut être plutôt par là qu'il faudrait chercher .

    Si j'ai bien compris
    alors je veux cmt les lignes de mon dbgrid maintiennes leurs couleur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.net] Changer couleur ligne DataGrid
    Par bguihal dans le forum Windows Forms
    Réponses: 7
    Dernier message: 22/07/2016, 06h54
  2. Alternance de couleur dans dbgrid
    Par albedo dans le forum C++Builder
    Réponses: 3
    Dernier message: 18/04/2006, 11h46
  3. [Couleur] Différence entre Delphi, Php/Html
    Par Rayek dans le forum Langage
    Réponses: 5
    Dernier message: 19/10/2005, 13h06
  4. sélection d'une ligne DBGrid par clic
    Par duffman dans le forum Bases de données
    Réponses: 2
    Dernier message: 17/05/2004, 13h45
  5. inserer une image dans un dbgrid delphi
    Par cello dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/02/2004, 18h51

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