Bonjour, la TProgressBar a 2 propriétés :
BackgroundColor et BarColor.
Je travaille avec RAD Studio XE2.
Ces 2 propriétés semblent n'avoir aucune action sur les couleurs de la TProgressBar.
Aurai-je oublié quelque chose ?
Merci de me dépanner.
Bonjour, la TProgressBar a 2 propriétés :
BackgroundColor et BarColor.
Je travaille avec RAD Studio XE2.
Ces 2 propriétés semblent n'avoir aucune action sur les couleurs de la TProgressBar.
Aurai-je oublié quelque chose ?
Merci de me dépanner.
Sur XP les Contrôles Windows ignorent très souvent les couleurs de fond, de fonte et autre au profit des couleurs du thème !
XE2 fourni un système de gestionnaire de style, il faudrait regarder comment il font pour redéfinir intégralement l'aspect des contrôles (on peut penser qu'il gère tous les message genre WM_PAINT, WM_NC_PAINT, WM_ERASEBACKGROUND...)
BarColor encapsule le message PBM_SETBARCOLOR
BackgroundColor encapsule le message PBM_SETBKCOLO
Et on peut lire dans le deux :
Même en mettant ParentBackground à false, astuce bien pratique pour colorer un TPanel, il y a peu de chance que cela fonctionneRemarks
When visual styles are enabled, this message has no effect.
As-tu l'exemple TGauge ?
Utilise là en Kind gkHorizontalBar, le code fourni est en Delphi (Vcl.Samples.Gauges.pas), tu as aussi la version CPP (..\RAD Studio\9.0\source\vcl\bcbsamples\cgauges.cpp) contenant le TCGauge
Le "souvent" dépend effectivement des versions de windows à priori.
En C++ Builder 2010 j'ai testé
- un PC avec Win7 x64, la ProgressBar prend bien la bonne couleur ( vert pour moi )
- sous windows XP pro service pack 3 version US (ou Allemand je sais pas trop), la progressBar devient orange / rouge ( et pourtant installation OS toute simple sans aucune customisation ).
- sous un autre windows XP pro sans service pack, la bar apparait avec la bonne couleur.
Bref, personnellement j'ai remplacé la progressbar par 2 TImages, une petite astuce pour faire des trucs soignés et qui fonctionnent indépendamment de windows.
Timage1 -> l'image de fond de la progressBar à zéro
Timage2 -> l'image de la progressbar à 100%
et fais juste un Image2->Width = n*Image1->Width/100;
avec n ton avancement.
Bien sur il faut que Image1->Left = Image2->Left et Image1->Height = Image2->Height et mettre un affichage en doublebuffer histoire d''empecher les clignotements.
Ca marche bien et ça permet d'obtenir de chouettes graphismes
Merci,
Le TGauge est parfait.
Il ajoute de plus le pourcentage de réalisation.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager