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

C++Builder Discussion :

Couleur d'une progressBar [FAQ]


Sujet :

C++Builder

  1. #1
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Par défaut Couleur d'une progressBar
    Salut

    j'utilise une progressBar dans mon application. Le probleme, c'est que j'aimerais bien changer la couleur de rmplissage, (avec FILLCOLOR), mais jarrive pas a l'utilser!
    QQ1 pour m'expliquer SVP?

    merci

    jul

  2. #2
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    CLX ou VCL???

    A première vue (dans ce cas là, l'aide de Builder), la propriété FillColor n'existe pas avec la VCL.

    Sinon, avec la CLX, il suffit de changer la valeur comme pour toute propriété TColor

    S'il y a une autre méthode, je ne la connais pas.

  3. #3
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Par défaut
    je sais pas ce que veux dire CLX ou VCL.

    Mais quand je creer un TProgressBar (composant en barre d'outil), je n'ai pas acces a la propriete de couleur!

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281

  5. #5
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    Citation Envoyé par cquadjul
    je sais pas ce que veux dire CLX ou VCL.

    Mais quand je creer un TProgressBar (composant en barre d'outil), je n'ai pas acces a la propriete de couleur!
    VCL = composants standards de Builder tirés de Delphi
    CLX = composants de Builder utilisés avec Kylix pour du Dev sous Linux.

    Si tu n'as pas accès à cette propriété (FillColor), ça signifie que tu utilises la VCL.

  6. #6
    Membre Expert
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par défaut
    Apparemment vous travaillez en CLX car en VCL classique il n'y a pas la propriété FillColor.

    Quand vous faites Fichier->Nouveau, vous avez le choix entre Application tout court avec la VCL (Visual Componant Library) ou Application CLX.

    En principe, si vous cliquez sur FillColor, vous avez le choix de la couleur de remplissage, j'ai essayé, ça marche parfaitement.

    À bientôt
    Gilles

  7. #7
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Par défaut
    ok, ba merci qd meme!

    si qq1 a une methode pour la VCL?

  8. #8
    Membre Expert
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par défaut
    Il semble que ce soit impossible en VCL, vous pouvez seulement changer la couleur de fond e.g.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ProgressBar1->Brush->Color=clRed;
    mais vous ne pouvez pas modifier le bleu foncé de remplissage choisi par défaut.

    À la limite, ça ne doit pas être très difficile la programmer mais le jeu en vaut-il la chandelle comme on dit?

    À bientôt
    Gilles

  9. #9
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Par défaut
    ok, merci bcp

    bien sur, c'est pas sa qui va changer la performance de mon programme, mais c'etait juste pour savoir comment faire (et si c'etait possible)

    merci

    @+

    jul

  10. #10
    Membre Expert
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par défaut
    Citation Envoyé par cquadjul
    c'etait juste pour savoir comment faire (et si c'etait possible)
    Tout est toujours possible mais parfois par des voies détournées.

    Déclarez dans la classe principale la fonction de remplissage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void __fastcall PaintPB(TProgressBar*);
    Juste après avoir modifié la position du ProgressBar, vous appelez la fonction par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ProgressBar1->Position+=10;
    PaintPB(ProgressBar1);
    La fonction en elle-même peut se programmer ainsi.

    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
    void __fastcall TForm1::PaintPB(TProgressBar* PB)
    {
    HDC deskTopDC;
    deskTopDC = GetWindowDC(GetDesktopWindow()) ;
    int i,j,x,y;
     
    int BG,BD;
     
    for(i=0;i<PB->Width-2;i++)
       for(j=0;j<PB->Height-2;j++)
          {
          x=i+PB->Left+Form1->Left+5;
          y=j+PB->Top+Form1->Top+31;
          if(GetPixel(deskTopDC,x,y)!=PB->Brush->Color)
          SetPixel(deskTopDC,x,y,clAqua);
          }
    }
    Notez qu'on ne peut pas passer par le canvas de Form1 qui ne donne que du noir, on triche en allant lire directement l'écran. Je n'ai pas trouvé le moyen de savoir les coordonnées réelles du progressBar, j'ajuste en ajoutant 5 en x et 31 en Y qui doivent correspondre aux bordures par défaut. Ça aurait été plus propre de trouver les coordonnées avec des vraies variables.

    À bientôt
    Gilles

  11. #11
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Par défaut
    Merci beaucoup GILLES, sa marche tres bien!!!

    a bientot

    jul

  12. #12
    CGi
    CGi est déconnecté
    Expert confirmé
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    Détails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SendMessage(ProgressBar1->Handle, PBM_SETBARCOLOR, 0, clRed);
    C'est ici.
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  13. #13
    Invité de passage
    Inscrit en
    Juillet 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 1
    Par défaut
    Ah yes!!! merci bcp!!!
    ++

  14. #14
    Membre Expert
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par défaut
    Citation Envoyé par CGi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SendMessage(ProgressBar1->Handle, PBM_SETBARCOLOR, 0, clRed);
    Bravo CGi, ça ne s'invente pas.

    J'ai encore dégainé mon code de dépannage trop vite.

    Merci encore à vous et à bientôt
    Gilles

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

Discussions similaires

  1. Changer la couleur d'une ProgressBar
    Par thibab dans le forum VB.NET
    Réponses: 20
    Dernier message: 30/12/2013, 10h50
  2. Couleur par défaut d'une ProgressBar ?
    Par Thyx5 dans le forum Android
    Réponses: 11
    Dernier message: 05/04/2012, 08h50
  3. Modifier la couleur d'une ProgressBar
    Par xav2303 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 23/06/2009, 19h18
  4. Changer la couleur d'une ProgressBar
    Par Kemanke dans le forum C++/CLI
    Réponses: 5
    Dernier message: 28/04/2009, 09h44
  5. changer la couleur d'une ProgressBar
    Par a_lincoln54 dans le forum C++Builder
    Réponses: 4
    Dernier message: 03/11/2008, 03h38

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