From ec692bc033ed6461e75d59aaca42e40247fce1a0 Mon Sep 17 00:00:00 2001 From: ask Date: Sun, 26 Sep 2010 02:43:12 +0000 Subject: [PATCH] TAChart: Show pointers in line series legend git-svn-id: trunk@27461 - --- components/tachart/talegend.pas | 32 ++++++++++++++++++++++++++++++++ components/tachart/taseries.pas | 13 ++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/components/tachart/talegend.pas b/components/tachart/talegend.pas index 8394d655eb..cf875f1b54 100644 --- a/components/tachart/talegend.pas +++ b/components/tachart/talegend.pas @@ -46,6 +46,18 @@ type public constructor Create(APen: TPen; const AText: String); procedure Draw(ACanvas: TCanvas; const ARect: TRect); override; + property Pen: TPen read FPen; + end; + + { TLegendItemLinePointer } + + TLegendItemLinePointer = class(TLegendItemLine) + protected + FPointer: TSeriesPointer; + public + constructor Create( + APen: TPen; APointer: TSeriesPointer; const AText: String); + procedure Draw(ACanvas: TCanvas; const ARect: TRect); override; end; { TLegendItemBrushRect } @@ -165,11 +177,31 @@ var y: Integer; begin inherited Draw(ACanvas, ARect); + if FPen = nil then exit; ACanvas.Pen.Assign(FPen); y := (ARect.Top + ARect.Bottom) div 2; ACanvas.Line(ARect.Left, y, ARect.Right, y); end; +{ TLegendItemLinePointer } + +constructor TLegendItemLinePointer.Create( + APen: TPen; APointer: TSeriesPointer; const AText: String); +begin + inherited Create(APen, AText); + FPointer := APointer; +end; + +procedure TLegendItemLinePointer.Draw(ACanvas: TCanvas; const ARect: TRect); +var + c: TPoint; +begin + inherited Draw(ACanvas, ARect); + if FPointer = nil then exit; + c := CenterPoint(ARect); + FPointer.Draw(ACanvas, c, clTAColor); +end; + { TLegendItemBrushRect } constructor TLegendItemBrushRect.Create(ABrush: TBrush; const AText: String); diff --git a/components/tachart/taseries.pas b/components/tachart/taseries.pas index 7fe6fd8ab0..60ab3dfc20 100644 --- a/components/tachart/taseries.pas +++ b/components/tachart/taseries.pas @@ -498,8 +498,19 @@ begin end; procedure TLineSeries.GetLegendItems(AItems: TChartLegendItems); +var + lp: TPen; + p: TSeriesPointer; begin - AItems.Add(TLegendItemLine.Create(LinePen, Title)); + if LineType = ltNone then + lp := nil + else + lp := LinePen; + if ShowPoints then + p := Pointer + else + p := nil; + AItems.Add(TLegendItemLinePointer.Create(lp, p, Title)); end; function TLineSeries.GetSeriesColor: TColor;