From b620802ae85e2d9d8af5183145f9c36afbf2fcfb Mon Sep 17 00:00:00 2001 From: wp Date: Fri, 6 Jul 2018 12:17:50 +0000 Subject: [PATCH] TAChart: Add new property MarkDistancePercent to TPieSeries. git-svn-id: trunk@58447 - --- components/tachart/taradialseries.pas | 13 ++++++++++++- components/tachart/taseries.pas | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/components/tachart/taradialseries.pas b/components/tachart/taradialseries.pas index 8cbaec56e4..036f4ba614 100644 --- a/components/tachart/taradialseries.pas +++ b/components/tachart/taradialseries.pas @@ -62,6 +62,7 @@ type TCustomPieSeries = class(TChartSeries) private FCenter: TPoint; + FMarkDistancePercent: Boolean; FMarkPositions: TPieMarkPositions; FRadius: Integer; FSlices: array of TPieSlice; @@ -74,6 +75,7 @@ type procedure SetEdgePen(AValue: TPen); procedure SetExploded(AValue: Boolean); procedure SetFixedRadius(AValue: TChartDistance); + procedure SetMarkDistancePercent(AValue: Boolean); procedure SetMarkPositions(AValue: TPieMarkPositions); procedure SetRotateLabels(AValue: Boolean); function SliceColor(AIndex: Integer): TColor; @@ -99,6 +101,8 @@ type property Exploded: Boolean read FExploded write SetExploded default false; property FixedRadius: TChartDistance read FFixedRadius write SetFixedRadius default 0; + property MarkDistancePercent: Boolean + read FMarkDistancePercent write SetMarkDistancePercent default false; property MarkPositions: TPieMarkPositions read FMarkPositions write SetMarkPositions default pmpAround; property RotateLabels: Boolean @@ -465,6 +469,13 @@ begin UpdateParentChart; end; +procedure TCustomPieSeries.SetMarkDistancePercent(AValue: Boolean); +begin + if FMarkDistancePercent = AValue then exit; + FMarkDistancePercent := AVAlue; + UpdateParentChart; +end; + procedure TCustomPieSeries.SetRotateLabels(AValue: Boolean); begin if FRotateLabels = AValue then exit; @@ -534,7 +545,7 @@ function TCustomPieSeries.TryRadius(ADrawer: IChartDrawer): TRect; var d: Double; begin - d := Marks.Distance; + d := IfThen(FMarkDistancePercent, Marks.Distance * FRadius / 100, Marks.Distance); if not Marks.DistanceToCenter then d += LabelExtraDist(p, AAngle); Result := EndPoint(AAngle, d); diff --git a/components/tachart/taseries.pas b/components/tachart/taseries.pas index d4865280e1..4508a3db3e 100644 --- a/components/tachart/taseries.pas +++ b/components/tachart/taseries.pas @@ -119,6 +119,7 @@ type property Depth; property Exploded; property FixedRadius; + property MarkDistancePercent; property MarkPositions; property RotateLabels; property Source;