TAChart: Correct vertical position of stacked bar series centered labels if ZeroLevel is not used.

git-svn-id: trunk@60087 -
This commit is contained in:
wp 2019-01-15 09:12:06 +00:00
parent ca3d4a29d7
commit 12f19c342d
2 changed files with 11 additions and 1 deletions

View File

@ -278,6 +278,7 @@ type
FUpBound: Integer; FUpBound: Integer;
FUseReticule: Boolean; FUseReticule: Boolean;
FOptimizeX: Boolean; FOptimizeX: Boolean;
FSupportsZeroLevel: Boolean;
procedure AfterDrawPointer( procedure AfterDrawPointer(
ADrawer: IChartDrawer; AIndex: Integer; const APos: TPoint); virtual; ADrawer: IChartDrawer; AIndex: Integer; const APos: TPoint); virtual;
@ -1121,6 +1122,7 @@ begin
Self.FPointer.Assign(Pointer); Self.FPointer.Assign(Pointer);
Self.Stacked := Stacked; Self.Stacked := Stacked;
Self.FUseReticule := UseReticule; Self.FUseReticule := UseReticule;
Self.FSupportsZeroLevel := FSupportsZeroLevel;
end; end;
inherited Assign(ASource); inherited Assign(ASource);
end; end;
@ -1249,6 +1251,7 @@ var
style: TChartStyle; style: TChartStyle;
lfont: TFont; lfont: TFont;
curr, prev: Double; curr, prev: Double;
ext: TDoubleRect;
begin begin
if not Marks.IsMarkLabelsVisible then exit; if not Marks.IsMarkLabelsVisible then exit;
@ -1256,13 +1259,17 @@ begin
try try
lfont.Assign(Marks.LabelFont); lfont.Assign(Marks.LabelFont);
ParentChart.DisableRedrawing; ParentChart.DisableRedrawing;
ext := Extent;
for i := FLoBound to FUpBound do begin for i := FLoBound to FUpBound do begin
if IsNan(Source[i]^.Point) then if IsNan(Source[i]^.Point) then
continue; continue;
y := Source[i]^.Y; y := Source[i]^.Y;
ysum := y; ysum := y;
prev := GetZeroLevel; if FSupportsZeroLevel then
prev := GetZeroLevel
else
prev := TDoublePointBoolArr(ext.a)[not IsRotated];
ld := GetLabelDirection(i); ld := GetLabelDirection(i);
for si := 0 to Source.YCount - 1 do begin for si := 0 to Source.YCount - 1 do begin
if Styles <> nil then begin if Styles <> nil then begin

View File

@ -1072,6 +1072,7 @@ begin
FStacked := true; FStacked := true;
FOptimizeX := false; FOptimizeX := false;
FSupportsZeroLevel := true;
end; end;
destructor TBarSeries.Destroy; destructor TBarSeries.Destroy;
@ -1469,6 +1470,7 @@ begin
FAreaLinesPen := TPen.Create; FAreaLinesPen := TPen.Create;
FAreaLinesPen.OnChange := @StyleChanged; FAreaLinesPen.OnChange := @StyleChanged;
FStacked := true; FStacked := true;
FSupportsZeroLevel := FUseZeroLevel;
end; end;
destructor TAreaSeries.Destroy; destructor TAreaSeries.Destroy;
@ -1757,6 +1759,7 @@ procedure TAreaSeries.SetUseZeroLevel(AValue: Boolean);
begin begin
if FUseZeroLevel = AValue then exit; if FUseZeroLevel = AValue then exit;
FUseZeroLevel := AValue; FUseZeroLevel := AValue;
FSupportsZeroLevel := FUseZeroLevel;
UpdateParentChart; UpdateParentChart;
end; end;