Réponse acceptée !
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;
|