diff --git a/components/tachart/tacustomseries.pas b/components/tachart/tacustomseries.pas index 92423bd883..61878907cd 100644 --- a/components/tachart/tacustomseries.pas +++ b/components/tachart/tacustomseries.pas @@ -303,7 +303,7 @@ type function GetLabelDataPoint(AIndex, AYIndex: Integer): TDoublePoint; virtual; function GetLabelDirection(AValue: Double; const ACenterLevel: Double): TLabelDirection; - procedure GetLegendItemsRect(AItems: TChartLegendItems; ABrush: TBrush); + procedure GetLegendItemsRect(AItems: TChartLegendItems; ABrush: TBrush; APen: TPen); function GetXRange(AX: Double; AIndex: Integer): Double; function GetZeroLevel: Double; virtual; function HasMissingYValue(AIndex: Integer; AMaxYIndex: Integer = MaxInt): Boolean; @@ -1547,22 +1547,22 @@ begin end; procedure TBasicPointSeries.GetLegendItemsRect( - AItems: TChartLegendItems; ABrush: TBrush); + AItems: TChartLegendItems; ABrush: TBrush; APen: TPen); var i: Integer; - li: TLegendItemBrushRect; + li: TLegendItemBrushPenRect; s: TChartStyle; begin case Legend.Multiplicity of lmSingle: begin - li := TLegendItemBrushRect.Create(ABrush, LegendTextSingle); + li := TLegendItemBrushPenRect.Create(ABrush, APen, LegendTextSingle); li.TextFormat := Legend.TextFormat; AItems.Add(li); end; lmPoint: for i := 0 to Count - 1 do begin - li := TLegendItemBrushRect.Create(ABrush, LegendTextPoint(i)); + li := TLegendItemBrushPenRect.Create(ABrush, APen, LegendTextPoint(i)); li.Color := GetColor(i); li.TextFormat := Legend.TextFormat; AItems.Add(li); @@ -1570,8 +1570,10 @@ begin lmStyle: if Styles <> nil then for s in Styles.Styles do - AItems.Add(TLegendItemBrushRect.Create( - IfThen(s.UseBrush, s.Brush, ABrush) as TBrush, LegendTextStyle(s) + AItems.Add(TLegendItemBrushPenRect.Create( + IfThen(s.UseBrush, s.Brush, ABrush) as TBrush, + IfThen(s.UsePen, s.Pen, APen) as TPen, + LegendTextStyle(s) )); end; end; diff --git a/components/tachart/talegend.pas b/components/tachart/talegend.pas index 94c75cb230..5ab9d77dd0 100644 --- a/components/tachart/talegend.pas +++ b/components/tachart/talegend.pas @@ -111,6 +111,16 @@ type procedure Draw(ADrawer: IChartDrawer; const ARect: TRect); override; end; + { TLegendItemBrushPenRect } + + TLegendItemBrushPenRect = class(TLegendItemBrushRect) + strict private + FPen: TFPCustomPen; + public + constructor Create(ABrush: TFPCustomBrush; APen: TFPCustomPen; const AText: String); + procedure Draw(ADrawer: IChartDrawer; const ARect: TRect); override; + end; + TLegendItemsEnumerator = class(TListEnumerator) public function GetCurrent: TLegendItem; @@ -514,6 +524,21 @@ begin ADrawer.Rectangle(ARect); end; +{ TLegendItemBrushPenRect } + +constructor TLegendItemBrushPenRect.Create( + ABrush: TFPCustomBrush; APen: TFPCustomPen; const AText: String); +begin + inherited Create(ABrush, AText); + FPen := APen; +end; + +procedure TLegendItemBrushPenRect.Draw(ADrawer: IChartDrawer; const ARect: TRect); +begin + ADrawer.Pen := FPen; + inherited Draw(ADrawer, ARect); +end; + { TChartLegend } procedure TChartLegend.AddGroups(AItems: TChartLegendItems); diff --git a/components/tachart/tamultiseries.pas b/components/tachart/tamultiseries.pas index df7e4af294..1cd67412f4 100644 --- a/components/tachart/tamultiseries.pas +++ b/components/tachart/tamultiseries.pas @@ -651,7 +651,7 @@ end; procedure TBubbleSeries.GetLegendItems(AItems: TChartLegendItems); begin - GetLegendItemsRect(AItems, BubbleBrush); + GetLegendItemsRect(AItems, BubbleBrush, BubblePen); end; function TBubbleSeries.GetNearestPoint(const AParams: TNearestPointParams; diff --git a/components/tachart/taseries.pas b/components/tachart/taseries.pas index a8e607f12b..75d17453f9 100644 --- a/components/tachart/taseries.pas +++ b/components/tachart/taseries.pas @@ -1580,7 +1580,7 @@ end; procedure TBarSeries.GetLegendItems(AItems: TChartLegendItems); begin - GetLegendItemsRect(AItems, BarBrush); + GetLegendItemsRect(AItems, BarBrush, BarPen); end; function TBarSeries.GetNearestPoint(const AParams: TNearestPointParams; @@ -2193,7 +2193,7 @@ end; procedure TAreaSeries.GetLegendItems(AItems: TChartLegendItems); begin - GetLegendItemsRect(AItems, AreaBrush); + GetLegendItemsRect(AItems, AreaBrush, AreaContourPen); end; function TAreaSeries.GetSeriesColor: TColor;