fpspreadsheet: Support axis position and inner/outer tick lines in ods writer.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@9000 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2023-10-29 21:33:39 +00:00
parent 6a183346ed
commit ceec0a7159
3 changed files with 27 additions and 15 deletions

View File

@ -116,6 +116,7 @@ begin
ch.XAxis.MinorGridLines.Color := scBlue;
ch.XAxis.MajorGridLines.Style := clsNoLine; //Solid;
ch.XAxis.MinorGridLines.Style := clsNoLine; //Solid;
ch.XAxis.Position := capStart;
ch.YAxis.ShowLabels := true;
ch.YAxis.LabelFont.Size := 8;
@ -192,6 +193,8 @@ begin
ch.YAxis.CaptionFont.Size := 18;
ch.XAxis.LabelFont.Style := [fssItalic];
ch.YAxis.LabelFont.Style := [fssItalic];
ch.YAxis.MajorTicks := [catInside, catOutside];
ch.YAxis.MinorTicks := [catOutside];
b.WriteToFile('test.xlsx', true); // Excel fails to open the file
b.WriteToFile('test.ods', true);

View File

@ -111,6 +111,8 @@ type
end;
TsChartAxisPosition = (capStart, capEnd, capValue);
TsChartAxisTick = (catInside, catOutside);
TsChartAxisTicks = set of TsChartAxisTick;
TsChartType = (ctEmpty, ctBar, ctLine, ctArea, ctBarLine, ctScatter, ctBubble);
TsChartAxis = class(TsChartFillElement)
@ -131,11 +133,11 @@ type
FLabelRotation: Integer;
FLogarithmic: Boolean;
FMajorInterval: Double;
FMajorTickLines: TsChartLine;
FMajorTicks: TsChartAxisTicks;
FMax: Double;
FMin: Double;
FMinorSteps: Double;
FMinorTickLines: TsChartLine;
FMinorTicks: TsChartAxisTicks;
FPosition: TsChartAxisPosition;
FPositionValue: Double;
FShowCaption: Boolean;
@ -158,12 +160,12 @@ type
property Logarithmic: Boolean read FLogarithmic write FLogarithmic;
property MajorGridLines: TsChartLine read FMajorGridLines write FMajorGridLines;
property MajorInterval: Double read FMajorInterval write FMajorInterval;
property MajorTickLines: TsChartLine read FMajorTickLines write FMajorTickLines;
property MajorTicks: TsChartAxisTicks read FMajorTicks write FMajorTicks;
property Max: Double read FMax write FMax;
property Min: Double read FMin write FMin;
property MinorGridLines: TsChartLine read FMinorGridLines write FMinorGridLines;
property MinorSteps: Double read FMinorSteps write FMinorSteps;
property MinorTickLines: TsChartLine read FMinorTickLines write FMinorTickLines;
property MinorTicks: TsChartAxisTicks read FMinorTicks write FMinorTicks;
property Position: TsChartAxisPosition read FPosition write FPosition;
property PositionValue: Double read FPositionValue write FPositionValue;
property ShowCaption: Boolean read FShowCaption write FShowCaption;
@ -530,15 +532,8 @@ begin
FAxisLine.Style := clsSolid;
FAxisLine.Width := PtsToMM(DEFAULT_CHART_LINEWIDTH);
FMajorTickLines := TsChartLine.Create;
FMajorTickLines.Color := scBlack;
FMajorTickLines.Style := clsSolid;
FMajorTickLines.Width := PtsToMM(DEFAULT_CHART_LINEWIDTH);
FMinorTickLines := TsChartLine.Create;
FMinorTickLines.Color := scBlack;
FMinorTickLines.Style := clsSolid;
FMinorTickLines.Width := PtsToMM(DEFAULT_CHART_LINEWIDTH);
FMajorTicks := [catOutside];
FMinorTicks := [];
FMajorGridLines := TsChartLine.Create;
FMajorGridLines.Color := scSilver;
@ -555,8 +550,6 @@ destructor TsChartAxis.Destroy;
begin
FMinorGridLines.Free;
FMajorGridLines.Free;
FMinorTickLines.Free;
FMajorTickLines.Free;
FAxisLine.Free;
FLabelFont.Free;
FCaptionFont.Free;

View File

@ -209,6 +209,22 @@ begin
if not Axis.AutomaticMinorSteps then
chartProps := chartProps + Format('chart:interval-minor-divisor="%d" ', [Axis.MinorSteps]);
case Axis.Position of
capStart: chartProps := chartProps + 'chart:axis-position="start" ';
capEnd: chartProps := chartProps + 'chart:axis-position="end" ';
capValue: chartProps := chartProps + Format('chart:axis-position="%g" ', [Axis.PositionValue], FPointSeparatorSettings);
end;
if (catInside in Axis.MajorTicks) then
chartProps := chartProps + 'chart:tick-marks-major-inner="true" ';
if (catOutside in Axis.MajorTicks) then
chartProps := chartProps + 'chart:tick-marks-major-outer="true" ';
if (catInside in Axis.MinorTicks) then
chartProps := chartProps + 'chart:tick-marks-minor-inner="true" ';
if (catOutside in Axis.MinorTicks) then
chartProps := chartProps + 'chart:tick-marks-minor-outer="true" ';
if Axis.Inverted then
chartProps := chartProps + 'chart:reverse-direction="true" ';