Couleur Panel dans une Page Control avec le style XP ?

Résolu
Val08000 Messages postés 22 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 23 octobre 2005 - 10 juil. 2005 à 14:04
cptpingu Messages postés 3835 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 1 novembre 2022 - 11 juil. 2005 à 02:55
Bonjour,
Je suis en train de programmer avec comme uses supplémentaires le "XPMan" afin de donner le style XP à mon programme !
Je crée des panels dans une PageControl et lorsque je lance mon application, je remarque que la couleur du Panel n'est pas la couleur que j'ai souhaté mais est blanche avec deux traits plus foncés sur les bords droit et inférieur !
Je voudrais savoir comment mettre un panel en une certaine couleur dans une pagecontrol.
Merci !

Val08000

1 réponse

cptpingu Messages postés 3835 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 1 novembre 2022 124
11 juil. 2005 à 02:55
J'ai déjà eu ce probleme, mais je n'ai moi même pas trouvé.



Tu peux contourner le problème:

- Créez ou utilise un composant qui fait cela. (Regarde les composants
de Mauricio, il te permettent même de faire des dégradés de couleur)

- Ou dessine un panel sur le canvas. (C'est pas génial, mais ca peut dépanner).



Pour dessiner un panel utilise ceci:



Procedure DessinerPanel(HWD:TCanvas;Color:TColor;Left,Top,Width,Height:integer);

var

I:integer;

begin

// Bord gauche-haut

HWD.Pen.Color:= clBtnHighlight;

HWD.MoveTo(Left,Top);

HWD.LineTo(Left+Width,Top);

HWD.MoveTo(Left,Top);

HWD.LineTo(Left,Top+Height);

// Bord droite-bas

HWD.Pen.Color:=clBtnShadow;

HWD.MoveTo(Left+Width-1,Top+Height-1);

HWD.LineTo(Left,Top+Height-1);

HWD.MoveTo(Left+Width-1,Top+Height-1);

HWD.LineTo(Left+Width-1,Top);

// Panel

HWD.Pen.Color:=Color;

For I: =Top+1 to Top+Height-2 do

begin

HWD.MoveTo(Left+1,I);

HWD.LineTo(Left+Width-1,I);

end;

end;



Tu peux l'utiliser comme ceci:



procedure TForm1.Button1Click(Sender: TObject);

begin

DessinerPanel(Form1.Canvas,$000000,10,10,20,40);

DessinerPanel(Form1.Canvas,clRed,50,40,100,200);

DessinerPanel(Form1.Canvas,Form1.Color,180,70,200,300);

end;
3
Rejoignez-nous