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

Langage Delphi Discussion :

Colorier une ligne dans un StringGrid et cacher une colonne


Sujet :

Langage Delphi

  1. #1
    Expert éminent sénior

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Points : 25 358
    Points
    25 358
    Par défaut Colorier une ligne dans un StringGrid et cacher une colonne
    Bonjour à tous!
    Voici deux problèmes devant lesquels je tourne en rond depuis un certain temps.
    1- Je veux que sur l'évènement double-clique d'un string, la couleur de fond de la ligne en question puisse changer.
    J'ai vu sur la faq, mais là c'est une coloration automatique des lignes.
    Il me semble, que tout se fait autour du Canvas. Mais comment?

    2- Je voudrais aussi savoir s'il est possible de cacher une colonne, le rendre invisible.

    Merci à tous!
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  2. #2
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    C'est dans un TStringGrid. Correct ?

    Je te prépare un petit exemple que j'ai sous la main et je reviens.
    Ce qui se conçoit bien s'énonce clairement
    Et les mots pour le dire viennent aisément (Boileau)

  3. #3
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut


    Me voila de retour

    Comment ai-je fait ? J'ai mis mon StringGrid dans un panel en ajoutant un colonne (la 9 dans l'exemple) et en m'arrangeant pour que cette 9ème colonne soit en dehors du panel donc invisible (il y a peut être mieux, mais je n'ai pas eu le temps de "pofiner")

    Dans mon StringGrid1DrawCell j'ai le code suivant : la cellule de la colonne 7 doit devenir rouge.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (StringGrid1.Cells[9,ARow] = '-1') and
           (ACol = 7)  then
           begin
              StringGrid1.Canvas.Brush.Color := clRed;
              StringGrid1.Canvas.FillRect(Rect);
              StringGrid1.Canvas.TextRect(Rect,Rect.Left+2,Rect.Top+2,StringGrid1    .Cells[ACol, ARow])
          end;
    En normal StringGrid1.Cells[9,ARow] est à ' '. Mais on pourrait mettre toute autre valeur.

    Dans l'évènement StringGrid1DblClick j'ai ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TMonApli.StringGrid1DblClick(Sender: TObject);
    begin
       with StringGrid1 do
          StringGrid1.Cells[9,Row] := '-1';
    end;
    et miracle de la technique, quand je clique, le cellule 7 de ma ligne vire au rouge.


    Alors pour toute une ligne, une petite boucle sur le nombre de colonnes ou alors (mais je n'ai pas testé) en supprimant la condition (ACol = 7)

    Pour rendre une colonne invisible, mets Font et Brush à la même valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (ACol = 5) and (ARow >0) then   // ARow >0  pour garder le titre
           begin
              StringGrid1.Canvas.Brush.Color := clWhite;
              StringGrid1.Canvas.Font.Color := clWhite;
              StringGrid1.Canvas.FillRect(Rect);
              StringGrid1.Canvas.TextRect(Rect,Rect.Left+2,Rect.Top+2,StringGrid1    .Cells[ACol, ARow])
          end;
    J'espère qu'avec ceci tu devrais t'en sortir.

    Bon courage

    Tiens j'y pense, ma 9ème colonne aurait pu être une colonne invisible en mettant uniquement la condition Acol = 9. Que t'en semble?
    Ce qui se conçoit bien s'énonce clairement
    Et les mots pour le dire viennent aisément (Boileau)

  4. #4
    Expert éminent sénior

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Points : 25 358
    Points
    25 358
    Par défaut
    Merci pour tout ce temps que tu t'es consacré pour moi.

    Je pense que pour la coloration des couleurs, ça peut aller. Je vais m'y mettre et revenir pour donner la confirmation

    Mais, en ce qui concerne la mise en visible de la colonne, je ne comprends pas encore bien ce que tu as fait. Surtout ta dernière phrase:
    ma 9ème colonne aurait pu être une colonne invisible en mettant uniquement la condition Acol = 9.
    Merci.
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  5. #5
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour

    Pour masquer une colonne, le plus simple est de définir sa largeur à '-1'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      StringGrid1.ColWidths[1] := -1;
    voir pour plus de détails sur 'ColWidths'.

    à+

  6. #6
    Expert éminent sénior

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Points : 25 358
    Points
    25 358
    Par défaut
    Citation Envoyé par banban54 Voir le message
    Pour masquer une colonne, le plus simple est de définir sa largeur à '-1'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      StringGrid1.ColWidths[1] := -1;
    Merci Banban. ça marche superbien!

    Je vais maintenant tester le code avec le changement de couleur avant de déclarer la discussion
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  7. #7
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut

    Envoyé par banban54
    Le plus simple est de mettre la largeur à -1:
    Et bien merci aussi, je n'y aurais même pas pensé.

    Ceci dit, ma solution peut être utilisée pour mettre un barre verticale un peu large (par exemple pour bien séparer deux parties d'un StringGrid).
    Ce qui se conçoit bien s'énonce clairement
    Et les mots pour le dire viennent aisément (Boileau)

  8. #8
    Expert éminent sénior

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Points : 25 358
    Points
    25 358
    Par défaut
    Citation Envoyé par JP.NUAGE Voir le message
    Ceci dit, ma solution peut être utilisée pour mettre un barre verticale un peu large (par exemple pour bien séparer deux parties d'un StringGrid).
    Mais moi, je ne vois toujours pas de quoi il s'agit
    Ce serait pas mal aussi que tu reviennes sur l'explication
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  9. #9
    Expert éminent sénior

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Points : 25 358
    Points
    25 358
    Par défaut
    OK. ça y est.
    Concernant la gestion des lignes, JPNuage, tout est maintenant ok pour moi.
    J'ai exploité ton code avec de légères modifications et ça marche merveilleusement bien.
    Merci pour tout!

    Je crois que je peux maintenant marquer en attendant tes complements de commentaires sur:
    Ceci dit, ma solution peut être utilisée pour mettre un barre verticale un peu large (par exemple pour bien séparer deux parties d'un StringGrid).
    Merci pour tout!
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/12/2008, 09h51
  2. insertion d'une ligne dans un StringGrid
    Par ludojojo dans le forum C++Builder
    Réponses: 3
    Dernier message: 04/06/2008, 21h26
  3. Supprimer une ligne dans un stringGrid
    Par pasqual dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/05/2007, 18h59
  4. Ajouter une ligne dans un Stringgrid
    Par jouze dans le forum Composants VCL
    Réponses: 6
    Dernier message: 20/02/2006, 21h40
  5. Déplacer la sélection d'une ligne dans un stringgrid
    Par jer64 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 14/03/2003, 00h57

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