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
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
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.
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!
pour savoir ce que c'est :
http://c.developpez.com/faq/bcb/?pag...ntsgeneralites
VCL = composants standards de Builder tirés de DelphiEnvoyé par cquadjul
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.
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
ok, ba merci qd meme!
si qq1 a une methode pour la VCL?
Il semble que ce soit impossible en VCL, vous pouvez seulement changer la couleur de fond e.g.
mais vous ne pouvez pas modifier le bleu foncé de remplissage choisi par défaut.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ProgressBar1->Brush->Color=clRed;
À 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
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
Tout est toujours possible mais parfois par des voies détournées.Envoyé par cquadjul
Déclarez dans la classe principale la fonction de remplissage.
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 void __fastcall PaintPB(TProgressBar*);
La fonction en elle-même peut se programmer ainsi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ProgressBar1->Position+=10; PaintPB(ProgressBar1);
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.
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); } }
À bientôt
Gilles
Merci beaucoup GILLES, sa marche tres bien!!!
a bientot
jul
C'est ici.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SendMessage(ProgressBar1->Handle, PBM_SETBARCOLOR, 0, clRed);
Site : http://chgi.developpez.com
Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)
Ah yes!!! merci bcp!!!
++
Bravo CGi, ça ne s'invente pas.Envoyé par CGi
J'ai encore dégainé mon code de dépannage trop vite.
Merci encore à vous et à bientôt
Gilles
Partager