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][FAQ] Dessiner des lignes de couleur


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 129
    Points : 95
    Points
    95
    Par défaut [DBGRID][FAQ] Dessiner des lignes de couleur
    J'utilise le code que j'ai trouve dans la faq pour changer la couleur de fond des cellules dans un dbgrid :

    http://delphi.developpez.com/faq/?pa...#couleurdbgrid

    Ca marche pas mal sauf que du coup, au premier affichage la premiere ligne est dessinee selectionnee, je suppose que ca doit venir du faite que le datasource (un composant TAdoQuery) pointe sur la premiere ligne du resultat de la requete. Toujours est-il que par defaut il ne me dessinait pas cette selection d'office. Y a t'il une solution pour qu'elle n'apparaisse qu'apres un clic de l'utilisateur ? Je pourrais utiliser une variable qui m'indiquerait s'il s'agit du premier affichage ou non mais je trouve pas ca tres propre. Merci pour vos reponses !

  2. #2
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 129
    Points : 95
    Points
    95
    Par défaut
    Desole de revenir a la charge mais j'ai tjs pas trouve de solution a ce petit probleme...

    Il n'y a pas de solution pour que mon datasource pointe sur aucun des champs du resultat de la requete au depart ? Ce serait peut-etre une solution pour eviter d'avoir cette selection d'office...

    Comment se fait-il que ca ne produise pas la meme chose si on laisse la maniere de gerer l'affichage du dbgrid d'origine ?

  3. #3
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
        If TDBGrid(Sender).DataSource.DataSet.FieldByName('Indice').Value=1 Then
          TDBGrid(Sender).Canvas.Brush.Color := clLime
        Else
          TDBGrid(Sender).Canvas.Brush.Color := clWhite;
      TDBGrid(Sender).DefaultDrawColumnCell(rect,datacol,column,state);
    end;
    Teste avec ce code pour voir.

    A+
    On progresse .....

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par okparanoid
    Il n'y a pas de solution pour que mon datasource pointe sur aucun des champs du resultat de la requete au depart ?
    Non, il n'y a pas de possibilité, un datasource pointera toujours sur un enregistrement quand il y en a.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    C'est juste Malatar.
    Néammoins, dans le code de la FAQ
    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.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      If gdSelected In State Then
      Begin
        TDBGrid(Sender).Canvas.Brush.Color := clNavy
      End Else
      Begin
        If TDBGrid(Sender).DataSource.DataSet.FieldByName('Indice').Value=1 Then
          TDBGrid(Sender).Canvas.Brush.Color := clLime
        Else
          TDBGrid(Sender).Canvas.Brush.Color := clWhite;
      End;
      TDBGrid(Sender).DefaultDrawColumnCell(rect,datacol,column,state);
    end;
    Si je comprends bien ce ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If gdSelected In State Then
      Begin
        TDBGrid(Sender).Canvas.Brush.Color := clNavy
      End Else
    La ligne selectionné est toujours en clNavy.
    Essaie avec le code que je t'ai fourni pour voir si ça marche.
    A+
    On progresse .....

  6. #6
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 129
    Points : 95
    Points
    95
    Par défaut
    Merci pour ta reponse

    Le probleme c'est que si je vire cette ligne avec gdselected (j'ai essaye suite a ton indication) je n'affiche plus correctement la lignes selectionnée, alors que je souhaite qu'une fois un clic effectue on materialise bien la ligne sur laquelle l'on a clique...

    En faite ce que je pige pas c'est comment l'affichage non "surcharge" se debrouille pour n'afficher aucune ligne selectionnee d'entree de jeu...

Discussions similaires

  1. Débutant - Dessiner des lignes
    Par jeromeke22 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 07/05/2007, 22h37
  2. Dessiner des lignes de couleur différente
    Par gids01 dans le forum 2D
    Réponses: 4
    Dernier message: 06/11/2006, 11h14
  3. 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
  4. dessiner des lignes "cliquables"
    Par r0d dans le forum Webdesign & Ergonomie
    Réponses: 14
    Dernier message: 21/03/2005, 15h02

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