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 :

[DBGRID] Comment coloriser 1 ligne sur 2 dans un DBGRID


Sujet :

Bases de données Delphi

  1. #21
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 30
    Points : 28
    Points
    28
    Par défaut
    Je ne sais pas utiliser le Debugger.

    Par contre je regarderai cela Lundi, pour ce Week-End impossible

    A+

  2. #22
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 23
    Points : 16
    Points
    16
    Par défaut En réponse
    Bien le bonjour did85

    J'utilise un bout de code qui me permet d'avoir deux couleurs intercalé.

    Tu dois ajouter la ligne suivante dans "implementation" "type" pour le bon fonctionnement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     AlternGrid = class(TCustomDBGrid);  //Alternance des couleurs

    Tu colles le code sur l'évènement OnDrawColumn du DBGrid:


    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
     
    procedure Tform7.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
     
    var dataset:Tdataset;
     
    begin
          dataset:= (Sender as TDBGrid).DataSource.DataSet;
        with AlternGrid(Sender) do
        begin
             if (DataSet.RecNo mod 2 = 1 ) then
             Canvas.Brush.Color := $00E6D9C4//$00EBFEFB
             else
             Canvas.Brush.Color := $00EAF7FF;// $00E7ECCA
          if  DataLink.ActiveRecord = Row -1 then
                                   begin
                                   Canvas.Font.Color:=clwhite ;
                                   Canvas.Brush.Color:=clblack;
        end;                       end ;
         DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column, State);
     
    end;
    Cela fonctionne parfaitement dans mon programme.

    Si ce la t'as été utile, signale le moi

    Rickless

  3. #23
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Premier message Posté le: Mar Sep 14, 2004 17:49
    Salut Rickless,

    Je pense qu'il serait peut être préférable de mettre à la disposition de tous le code entier de ton composant comme cà on n'aura plus qu'à l'installer dans la palette

    J'avais eu aussi l'idée de faire un pareil compo mais je ne l'ai jamais terminé (à force de vouloir le rendre parfait peut être ). Ceci dit, une idée que je te proposerai serai de créer une propriété publiée qui permettrait à chacun de choisir les couleurs de l'alternance, les coder en dur ne présente pas un très grand avantage à mon avis.

    A+

  4. #24
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Oui, je suis complètement d'accord King

    Mais tous cela dès que je serais capable d'insérer un compo et surtout d'en créer..... Alors j'apporterais beaucoup de petit "truc" de ce genre.



    Rickless

  5. #25
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    J'ai dit cà parce que j'avais vu cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AlternGrid = class(TCustomDBGrid);  //Alternance des couleurs
    j'ai pensé que tu créais alors ton propre composant...

  6. #26
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 56
    Points : 32
    Points
    32
    Par défaut
    essaye ceci ça à marcher pour moi, j'ai juste enlevé le mot datamodule que je ne sais pas ce que c'est ! ?
    mon Adoquery contient le text suivant: ' select * from ma_table '
    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
     
    procedure TForm1.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect; 
      DataCol: Integer; Column: TColumn; State: TGridDrawState); 
    begin 
      with DBGrid.Canvas do 
      begin 
        if (DataModule.ADOQuery.RecNo mod 2) = 0  // pour alterner les couleur de lignes 
          then Brush.Color := clwhite 
          else Brush.Color := clred; 
     
        if (gdSelected in State) or (gdFocused in State) then // pour avoir la ligne selectionné ou qui a le focus dans une autre couleur 
          begin 
            Brush.Color := clBlue; 
            Font.Style := [fsBold]; 
            font.Color := clWindowText; 
          end; 
      end;  
     
      Column.Grid.DefaultDrawColumnCell(Rect, DataCol, Column, State); 
    end;

  7. #27
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 56
    Points : 32
    Points
    32
    Par défaut
    en fait le site auquel tu fait référence ne marche pas ,!!!
    http://romuald.raffin.free.fr/composants.htm
    peut tu nous le redonner stp
    merci

  8. #28
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 549
    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 549
    Points : 25 119
    Points
    25 119
    Par défaut
    Quel est intérêt de répondre à un sujet clos depuis 7 ans ?
    Rickless est déjà intervenu à tort en 2005 dessus !

    En plus, tu semble ne pas comprendre ta propre réponse !

    Sinon un TDataModule, c'est un container invisible pour y déposer des composants comme les DataSet, souvent cela permet de partager les objets entre plusieurs TForm

    en réalité la vraie bonne méthode serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     with (Sender as TDBGrid), Canvas do 
      begin 
        if (DataSource.DataSet.RecNo mod 2) = 0  // pour alterner les couleur de lignes 
          ...
    cela évite tout mauvaise dépendance avec un autre objet !
    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

  9. #29
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 56
    Points : 32
    Points
    32
    Par défaut
    vraiment désolé j'avais la tête ailleurs
    pour le datamodule je sais se que c'est
    je n'ai réalisé se que j'ai posté qu'après,
    je pense que je dois me reposer un peut, mon application concernant la gestion d'un cabinet médical me fatigue trop...
    et merci encore pour le code

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/11/2009, 11h55
  2. Comment mettre des lignes de couleur dans une TCheckListBox ?
    Par Isa31 dans le forum Composants VCL
    Réponses: 9
    Dernier message: 31/03/2005, 08h40
  3. Réponses: 4
    Dernier message: 02/09/2004, 14h50
  4. [C#] Comment mettre une ligne en couleur dans mon DataGrid ?
    Par vandeyy dans le forum Windows Forms
    Réponses: 7
    Dernier message: 19/07/2004, 10h03
  5. [VB6] Obtenir +sieurs lignes sur RptTextBox dans un DataReport
    Par Babaframy dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 24/01/2004, 12h10

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