Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Tchart Hintergrund abschnittsweise einfärben (https://www.delphipraxis.net/124841-tchart-hintergrund-abschnittsweise-einfaerben.html)

th_bone 26. Nov 2008 08:00


Tchart Hintergrund abschnittsweise einfärben
 
Hi,

ist es bei Tchart möglich, bzw. gibt es eine Funktion mit der man den Hintergrund
Abschnittsweise einen andere Farbe zuzweisen, z.B. Gerade Wochen rot, ungerade weiß,
kann.

Danke

Ralf

ConstantGardener 26. Nov 2008 10:29

Re: Tchart Hintergrund abschnittsweise einfärben
 
Hallo th_bone,

eine direkte funktion gibt es dafür nicht aber du kannst das selbst zeichnen. Hier ein Ausschnitt aus einem meiner Programme. Ich fülle hier mehrer Bereiche des Chart bevor die Achsen und Serien gezeichnet werden in diesem Fall mit Gradient. Ein normales FillRect tuts natürlich auch

mfg cg

Delphi-Quellcode:
procedure TForm_Schema.Chart1BeforeDrawAxes(Sender: TObject);
var x1,x2,y1,y2 : integer;
begin
   if not (onCalculate or onPrint) then
    begin
     Chart1.Canvas.ClipRectangle(Chart1.ChartRect);
     try
      x1:=Chart1.BottomAxis.CalcPosValue (Chart1.BottomAxis.Minimum-10);
      x2:=Chart1.BottomAxis.CalcPosValue (Chart1.BottomAxis.Maximum+10);

      y1:=Chart1.LeftAxis.CalcPosValue (MaxFlaechen+0.5);
      y2:=Chart1.LeftAxis.CalcPosValue (0);
      Chart1.Canvas.GradientFill(Rect(x1,y1,x2,y2),clWhite,clMoneyGreen,gdTopBottom);

      If MaxVerkauf>0 then
       begin
        y1:=Chart1.LeftAxis.CalcPosValue (MaxFlaechen+0.5);
        y2:=Chart1.LeftAxis.CalcPosValue (MaxVerkauf+0.5);
        Chart1.Canvas.GradientFill(Rect(x1,y1,x2,y2),clMoneyGreen,clWhite,gdTopBottom);
       end;

       if MaxVerkauf>0 then
        y1:=Chart1.LeftAxis.CalcPosValue (MaxVerkauf+0.5)
       else
        y1:=Chart1.LeftAxis.CalcPosValue (MaxFlaechen+0.5);
       y2:=Chart1.LeftAxis.CalcPosValue (Chart1.LeftAxis.Maximum);

       Chart1.Canvas.GradientFill(Rect(x1,y1,x2,y2+1),clWhite,clMoneyGreen,gdTopBottom);
     finally
      Chart1.Canvas.UnClipRectangle;
     end;
    end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz