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

Composants VCL Delphi Discussion :

Fond de Grille sur 2 couleur


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 74
    Points : 63
    Points
    63
    Par défaut Fond de Grille sur 2 couleur
    Grace a mon forum favoris, j'ai pu mettre au point la procedure suivante qui permet d'afficher sur 2 couleurs le fond de page d'une GRID
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure TparentForm.grilleDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    var parite: integer;
    begin
      parite := grille.DataSource.DataSet.RecordCount mod 2;
      if (grille.DataSource.DataSet.RecNo mod 2 = parite) and not (gdSelected in State)
        then grille.Canvas.Brush.Color := colorLignePaire;
      grille.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;
    Par contre, lorsque je mets un filtre a true, le fond redevient blanc.
    Il faut preciser que je joue ce filtre dans une requete SQL.

    Est ce que quelqu'un a une idee pour preserver l'affichage?
    Merci

  2. #2
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Ha oui, RecNo ne va pas fonctionner pour déterminer le numéro de ligne si tu filtre ta table ou Query.

    Va voir ce post sur lequel j'ai répondu hier, je donne une explication :
    http://www.developpez.net/forums/vie...075&highlight=

    A partir de là, voici ton nouveau code :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    TPublicDataCustomDBGrid = class(TCustomGrid)
      public
        FIndicators: TImageList;
        FTitleFont: TFont;
        FReadOnly: Boolean;
        FOriginalImeName: TImeName;
        FOriginalImeMode: TImeMode;
        FUserChange: Boolean;
        FIsESCKey: Boolean;
        FLayoutFromDataset: Boolean;
        FOptions: TDBGridOptions;
        FTitleOffset, FIndicatorOffset: Byte;
        FUpdateLock: Byte;
        FLayoutLock: Byte;
        FInColExit: Boolean;
        FDefaultDrawing: Boolean;
        FSelfChangingTitleFont: Boolean;
        FSelecting: Boolean;
        FSelRow: Integer;
        FDataLink: TGridDataLink;
        FOnColEnter: TNotifyEvent;
        FOnColExit: TNotifyEvent;
        FOnDrawDataCell: TDrawDataCellEvent;
        FOnDrawColumnCell: TDrawColumnCellEvent;
        FEditText: string;
        FColumns: TDBGridColumns;
        FVisibleColumns: TList;
        FBookmarks: TBookmarkList;
        FSelectionAnchor: TBookmarkStr;
        FOnEditButtonClick: TNotifyEvent;
        FOnColumnMoved: TMovedEvent;
        FOnCellClick: TDBGridClickEvent;
        FOnTitleClick:TDBGridClickEvent;
        FDragCol: TColumn;
    end; 
     
    procedure TparentForm.grilleDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    var parite: integer;
          NumLigne:integer;
    begin
      NumLigne:=TPublicDataCustomDBGrid(grille).FDataLink.ActiveRecord; 
     
      if (NumLigne mod 2 = 0) and not (gdSelected in State)
        then grille.Canvas.Brush.Color := colorLignePaire;
      grille.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;
    Ensuite, ta façon de déterminer si ton numéro de ligne est paire ou impaire n'est pas bonne selon moi.
    En effet, normalement, cela ce détermine comme celà plutôt.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If (variable mod 2)=0 
    then Pair
    else Impair;
    donc je pense que ton code aurait plutôt du être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TparentForm.grilleDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      if (grille.DataSource.DataSet.RecNo mod 2 = 0) and not (gdSelected in State)
        then grille.Canvas.Brush.Color := colorLignePaire;
      grille.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;
    Bon dev

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 74
    Points : 63
    Points
    63
    Par défaut
    Merci Cela est parfait

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

Discussions similaires

  1. Copier uniquement les Couleurs de fond des cellules sur Excel 2007
    Par fherolvera dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/10/2011, 11h41
  2. Les coins arrondis sur une couleur de fond de Table
    Par zooffy dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 05/07/2010, 12h56
  3. [Smarty] x-cart recherche sur les couleurs de fonds
    Par jmp555 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 16/10/2007, 08h20
  4. Changer couleur de fond en pressant sur un bouton
    Par gids01 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/02/2007, 14h17
  5. Colorisation de fond de TDbGrid sur 2 couleurs
    Par AODRENN dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/08/2005, 19h54

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