You've already forked lazarus-ccr
fpspreadsheet: Build styles from some chart properties
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8975 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -47,6 +47,21 @@ begin
|
||||
ch.PlotArea.Background.Style := fsSolidFill;
|
||||
ch.PlotArea.Background.FgColor := $F0F0F0;
|
||||
{$ENDIF}
|
||||
ch.XAxis.ShowLabels := true;
|
||||
ch.XAxis.LabelFont.Size := 8;
|
||||
ch.XAxis.LabelFont.Color := scRed;
|
||||
ch.XAxis.AxisLine.Color := scRed;
|
||||
ch.XAxis.CaptionFont.Color := scRed;
|
||||
ch.XAxis.CaptionFont.Size := 12;
|
||||
|
||||
ch.YAxis.ShowLabels := true;
|
||||
ch.YAxis.LabelFont.Size := 8;
|
||||
ch.YAxis.LabelFont.Color := scBlue;
|
||||
ch.YAxis.AxisLine.Color := scBlue;
|
||||
ch.YAxis.CaptionFont.Color := scBlue;
|
||||
ch.YAxis.CaptionFont.Size := 12;
|
||||
ch.YAxis.LabelRotation := 90;
|
||||
ch.YAxis.CaptionRotation := 90;
|
||||
|
||||
ch.Title.Caption := 'HALLO';
|
||||
ch.Title.Visible := true;
|
||||
@ -54,8 +69,8 @@ begin
|
||||
ch.SubTitle.Caption := 'hallo';
|
||||
ch.SubTitle.Visible := true;
|
||||
|
||||
ch.YAxis.ShowMajorGridLines := true;
|
||||
ch.YAxis.ShowMinorGridLines := true;
|
||||
ch.YAxis.MajorGridLines.Style := clsSolid;
|
||||
ch.YAxis.MinorGridLines.Style := clsSolid;
|
||||
|
||||
// 2nd sheet
|
||||
sh2 := b.AddWorksheet('test2');
|
||||
@ -84,8 +99,10 @@ begin
|
||||
ch.Title.Visible := true;
|
||||
ch.SubTitle.Caption := 'hallo';
|
||||
ch.Subtitle.Visible := true;
|
||||
ch.XAxis.ShowMajorGridLines := true;
|
||||
ch.XAxis.ShowMinorGridLines := true;
|
||||
ch.XAxis.MajorGridLines.Style := clsNoLine;
|
||||
ch.XAxis.MinorGridLines.Style := clsNoLine;
|
||||
ch.YAxis.MajorGridLines.Style := clsNoLine;
|
||||
ch.YAxis.MinorGridLines.Style := clsNoLine;
|
||||
|
||||
b.WriteToFile('test.xlsx', true); // Excel fails to open the file
|
||||
b.WriteToFile('test.ods', true);
|
||||
|
@ -27,36 +27,17 @@ var
|
||||
type
|
||||
TsChart = class;
|
||||
|
||||
TsChartLineRec = record
|
||||
Style: Integer; // index into chart's LineStyle list or predefined clsSolid/clsNoLine
|
||||
Width: Double; // mm
|
||||
Color: TsColor; // in hex: $00bbggrr, r=red, g=green, b=blue
|
||||
Transparency: Double; // in percent
|
||||
class operator = (A, B: TsChartLineRec): Boolean;
|
||||
end;
|
||||
|
||||
TsChartLine = class
|
||||
Style: Integer; // index into chart's LineStyle list or predefined clsSolid/clsNoLine
|
||||
Width: Double; // mm
|
||||
Color: TsColor; // in hex: $00bbggrr, r=red, g=green, b=blue
|
||||
Transparency: Double; // in percent
|
||||
procedure FromRecord(const ALine: TsChartLineRec);
|
||||
function ToRecord: TsChartLineRec;
|
||||
end;
|
||||
|
||||
TsChartFillRec = record
|
||||
Style: TsFillStyle;
|
||||
FgColor: TsColor;
|
||||
BgColor: TsColor;
|
||||
class operator = (A, B: TsChartFillRec): Boolean;
|
||||
end;
|
||||
|
||||
TsChartFill = class
|
||||
Style: TsFillStyle;
|
||||
FgColor: TsColor;
|
||||
BgColor: TsColor;
|
||||
procedure FromRecord(const AFill: TsChartFillRec);
|
||||
function ToRecord: TsChartFillRec;
|
||||
end;
|
||||
|
||||
TsChartLineSegment = record
|
||||
@ -122,7 +103,7 @@ type
|
||||
TsChartAxisPosition = (capStart, capEnd, capValue);
|
||||
TsChartType = (ctEmpty, ctBar, ctLine, ctArea, ctBarLine, ctScatter);
|
||||
|
||||
TsChartAxis = class(TsChartText)
|
||||
TsChartAxis = class(TsChartFillElement)
|
||||
private
|
||||
FAutomaticMax: Boolean;
|
||||
FAutomaticMin: Boolean;
|
||||
@ -132,8 +113,12 @@ type
|
||||
FMajorGridLines: TsChartLine;
|
||||
FMinorGridLines: TsChartline;
|
||||
FInverted: Boolean;
|
||||
FCaption: String;
|
||||
FCaptionFont: TsFont;
|
||||
FCaptionRotation: Integer;
|
||||
FLabelFont: TsFont;
|
||||
FLabelFormat: String;
|
||||
FLabelRotation: Integer;
|
||||
FLogarithmic: Boolean;
|
||||
FMajorInterval: Double;
|
||||
FMajorTickLines: TsChartLine;
|
||||
@ -143,34 +128,35 @@ type
|
||||
FMinorTickLines: TsChartLine;
|
||||
FPosition: TsChartAxisPosition;
|
||||
FPositionValue: Double;
|
||||
FShowMajorGridLines: Boolean;
|
||||
FShowMinorGridLines: Boolean;
|
||||
FShowCaption: Boolean;
|
||||
FShowLabels: Boolean;
|
||||
public
|
||||
constructor Create(AChart: TsChart);
|
||||
destructor Destroy; override;
|
||||
|
||||
property AutomaticMax: Boolean read FAutomaticMax write FAutomaticMax;
|
||||
property AutomaticMin: Boolean read FAutomaticMin write FAutomaticMin;
|
||||
property AutomaticMajorInterval: Boolean read FAutomaticMajorInterval write FAutomaticMajorInterval;
|
||||
property AutomaticMinorSteps: Boolean read FAutomaticMinorSteps write FAutomaticMinorSteps;
|
||||
property AxisLine: TsChartLine read FAxisLine write FAxisLine;
|
||||
property Caption: String read FCaption write FCaption;
|
||||
property CaptionFont: TsFont read FCaptionFont write FCaptionFont;
|
||||
property CaptionRotation: Integer read FCaptionRotation write FCaptionRotation;
|
||||
property Inverted: Boolean read FInverted write FInverted;
|
||||
property LabelFont: TsFont read FLabelFont write FLabelFont;
|
||||
property LabelFormat: String read FLabelFormat write FLabelFormat;
|
||||
property LabelRotation: Integer read FLabelRotation write FLabelRotation;
|
||||
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 Max: Double read FMax write FMax;
|
||||
property Min: Double read FMin write FMin;
|
||||
property MinorGrid: TsChartLine read FMinorGridLines write FMinorGridLines;
|
||||
property MinorGridLines: TsChartLine read FMinorGridLines write FMinorGridLines;
|
||||
property MinorSteps: Double read FMinorSteps write FMinorSteps;
|
||||
property MinorTickLines: TsChartLine read FMinorTickLines write FMinorTickLines;
|
||||
property Position: TsChartAxisPosition read FPosition write FPosition;
|
||||
property PositionValue: Double read FPositionValue write FPositionValue;
|
||||
property ShowMajorGridLines: Boolean read FShowMajorGridLines write FShowMajorGridLines;
|
||||
property ShowMinorGridLines: Boolean read FShowMinorGridLines write FShowMinorGridLines;
|
||||
property ShowCaption: Boolean read FShowCaption write FShowCaption;
|
||||
property ShowLabels: Boolean read FShowLabels write FShowLabels;
|
||||
end;
|
||||
|
||||
@ -345,52 +331,7 @@ implementation
|
||||
|
||||
const
|
||||
DEFAULT_LINE_WIDTH = 0.75; // pts
|
||||
|
||||
{ TsChartLineRec }
|
||||
class operator TsChartLineRec.= (A, B: TsChartLineRec): Boolean;
|
||||
begin
|
||||
Result := (A.Style = B.Style) and (A.Width = B.Width) and
|
||||
(A.Color = B.Color) and (A.Transparency = B.Transparency);
|
||||
end;
|
||||
|
||||
{ TsChartLine }
|
||||
procedure TsChartLine.FromRecord(const ALine: TsChartLineRec);
|
||||
begin
|
||||
Style := ALine.Style;
|
||||
Width := ALine.Width;
|
||||
Color := ALine.Color;
|
||||
Transparency := ALine.Transparency;
|
||||
end;
|
||||
|
||||
function TsChartLine.ToRecord: TsChartLineRec;
|
||||
begin
|
||||
Result.Style := Style;
|
||||
Result.Width := Width;
|
||||
Result.Color := Color;
|
||||
Result.Transparency := Transparency;
|
||||
end;
|
||||
|
||||
{ TsChartFillRec }
|
||||
class operator TsChartFillRec.= (A, B: TsChartFillRec): Boolean;
|
||||
begin
|
||||
Result := (A.Style = B.Style) and (A.FgColor = B.FgColor) and (A.BgColor = B.BgColor);
|
||||
end;
|
||||
|
||||
{ TsChartFill }
|
||||
procedure TsChartFill.FromRecord(const AFill: TsChartFillRec);
|
||||
begin
|
||||
Style := AFill.Style;
|
||||
FgColor := AFill.FgColor;
|
||||
BgColor := AFill.BgColor;
|
||||
end;
|
||||
|
||||
function TsChartFill.ToRecord: TsChartFillRec;
|
||||
begin
|
||||
Result.Style := Style;
|
||||
Result.BgColor := BgColor;
|
||||
Result.FgColor := FgColor;
|
||||
end;
|
||||
|
||||
DEFAULT_FONT = 'Arial';
|
||||
|
||||
{ TsChartLineStyle }
|
||||
|
||||
@ -476,8 +417,8 @@ begin
|
||||
inherited Create(AChart);
|
||||
FShowCaption := true;
|
||||
FFont := TsFont.Create;
|
||||
FFont.FontName := ''; // replace by workbook's default font
|
||||
FFont.Size := 0; // replace by workbook's default font size
|
||||
FFont.FontName := DEFAULT_FONT;
|
||||
FFont.Size := 10;
|
||||
FFont.Style := [];
|
||||
FFont.Color := scBlack;
|
||||
end;
|
||||
@ -498,12 +439,22 @@ begin
|
||||
FAutomaticMajorInterval := true;
|
||||
FAutomaticMinorSteps := true;
|
||||
|
||||
FCaptionFont := TsFont.Create;
|
||||
FCaptionFont.FontName := DEFAULT_FONT;
|
||||
FCaptionFont.Size := 10;
|
||||
FCaptionFont.Style := [];
|
||||
FCaptionFont.Color := scBlack;
|
||||
|
||||
FLabelFont := TsFont.Create;
|
||||
FLabelFont.FontName := ''; // replace by workbook's default font
|
||||
FLabelFont.Size := 0; // Replace by workbook's default font size
|
||||
FLabelFont.FontName := DEFAULT_FONT;
|
||||
FLabelFont.Size := 9;
|
||||
FLabelFont.Style := [];
|
||||
FLabelFont.Color := scBlack;
|
||||
|
||||
FCaptionRotation := 0;
|
||||
FLabelRotation := 0;
|
||||
|
||||
FShowCaption := true;
|
||||
FShowLabels := true;
|
||||
|
||||
FAxisLine := TsChartLine.Create;
|
||||
@ -540,41 +491,10 @@ begin
|
||||
FMajorTickLines.Free;
|
||||
FAxisLine.Free;
|
||||
FLabelFont.Free;
|
||||
FCaptionFont.Free;
|
||||
inherited;
|
||||
end;
|
||||
(*
|
||||
{ Determines how many labels are provided in the CategoryLabelRange. }
|
||||
function TsChartAxis.GetCategoryCount: Integer;
|
||||
begin
|
||||
if CategoriesInCol then
|
||||
Result := FLabelRange.Col2 - FLabelRange.Col1 + 1
|
||||
else
|
||||
if CategoriesInCol then
|
||||
Result := FLabelRange.Row2 - FLabelRange.Row1 + 1
|
||||
else
|
||||
Result := 0;
|
||||
end;
|
||||
|
||||
{ Returns true when the axis owns its own category labels. Otherwise labels
|
||||
are taken from the series }
|
||||
function TsChartAxis.HasCategoryLabels: Boolean;
|
||||
begin
|
||||
Result := CategoriesInCol or CategoriesInRow;
|
||||
end;
|
||||
|
||||
{ Determines whether the axis labels are taken from columns (true) or rows (false) }
|
||||
function TsChartAxis.CategoriesInCol: Boolean;
|
||||
begin
|
||||
Result := (FCategoryLabelRange.Row1 <> FCategoryLabelRange.Row2) and
|
||||
(FCategoryLabelRange.Col1 = FCategoryLabelRange.Col2);
|
||||
end;
|
||||
|
||||
function TsChartAxis.CategoriesInRow: Boolean;
|
||||
begin
|
||||
Result := (FCategoryLabelRange.Col1 <> FCategoryLabelRange.Col2) and
|
||||
(FCategoryLabelRange.Row1 = FCategoryLabelRange.Row2);
|
||||
end;
|
||||
*)
|
||||
|
||||
{ TsChartSeries }
|
||||
|
||||
@ -763,31 +683,29 @@ begin
|
||||
|
||||
FXAxis := TsChartAxis.Create(self);
|
||||
FXAxis.Caption := 'x axis';
|
||||
FXAxis.CaptionFont.Style := [fssBold];
|
||||
FXAxis.LabelFont.Size := 9;
|
||||
FXAxis.Font.Size := 10;
|
||||
FXAxis.Font.Style := [fssBold];
|
||||
FXAxis.Position := capStart;
|
||||
|
||||
FX2Axis := TsChartAxis.Create(self);
|
||||
FX2Axis.Caption := 'Secondary x axis';
|
||||
FX2Axis.CaptionFont.Style := [fssBold];
|
||||
FX2Axis.LabelFont.Size := 9;
|
||||
FX2Axis.Font.Size := 10;
|
||||
FX2Axis.Font.Style := [fssBold];
|
||||
FX2Axis.Visible := false;
|
||||
FX2Axis.Position := capEnd;
|
||||
|
||||
FYAxis := TsChartAxis.Create(self);
|
||||
FYAxis.Caption := 'y axis';
|
||||
FYAxis.CaptionFont.Style := [fssBold];
|
||||
FYAxis.CaptionRotation := 90;
|
||||
FYAxis.LabelFont.Size := 9;
|
||||
FYAxis.Font.Size := 10;
|
||||
FYAxis.Font.Style := [fssBold];
|
||||
FYAxis.Position := capStart;
|
||||
|
||||
FY2Axis := TsChartAxis.Create(self);
|
||||
FY2Axis.Caption := 'Secondary y axis';
|
||||
FY2Axis.CaptionFont.Style := [fssBold];
|
||||
FY2Axis.CaptionRotation := 90;
|
||||
FY2Axis.LabelFont.Size := 9;
|
||||
FY2Axis.Font.Size := 10;
|
||||
FY2Axis.Font.Style := [fssBold];
|
||||
FY2Axis.Visible := false;
|
||||
FY2Axis.Position := capEnd;
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
unit fpsChartStyles;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
{$modeswitch advancedrecords}
|
||||
|
||||
interface
|
||||
|
||||
@ -8,92 +9,474 @@ uses
|
||||
Classes, SysUtils, fpsTypes, fpsChart;
|
||||
|
||||
type
|
||||
TsChartStyleType = (cstBackground, cstWall, cstFloor);
|
||||
TsChartBackgroundType = (cbtBackground, cbtWall, cbtFloor);
|
||||
|
||||
TsChartAxisType = (catPrimaryX, catPrimaryY, catSecondaryX, catSecondaryY);
|
||||
|
||||
TsChartCaptionType = (cctTitle, cctSubtitle,
|
||||
cctPrimaryX, cctPrimaryY, cctSecondaryX, cctSecondaryY);
|
||||
|
||||
TsChartLineRec = record
|
||||
Style: Integer; // index into chart's LineStyle list or predefined clsSolid/clsNoLine
|
||||
Width: Double; // mm
|
||||
Color: TsColor; // in hex: $00bbggrr, r=red, g=green, b=blue
|
||||
Transparency: Double; // in percent
|
||||
procedure FromLine(ALine: TsChartline);
|
||||
procedure ToLine(ALine: TsChartLine);
|
||||
class operator = (A, B: TsChartLineRec): Boolean;
|
||||
end;
|
||||
|
||||
TsChartFillRec = record
|
||||
Style: TsFillStyle;
|
||||
FgColor: TsColor;
|
||||
BgColor: TsColor;
|
||||
procedure FromFill(AFill: TsChartFill);
|
||||
procedure ToFill(AFill: TsChartFill);
|
||||
class operator = (A, B: TsChartFillRec): Boolean;
|
||||
end;
|
||||
|
||||
TsChartFontRec = record
|
||||
FontName: String;
|
||||
Size: Double;
|
||||
Style: TsFontStyles;
|
||||
Color: TsColor;
|
||||
Position: TsFontPosition;
|
||||
procedure FromFont(AFont: TsFont);
|
||||
procedure ToFont(AFont: TsFont);
|
||||
class operator = (A, B: TsChartFontRec): Boolean;
|
||||
end;
|
||||
|
||||
TsChartAxisRec = record
|
||||
AutomaticMax: Boolean;
|
||||
AutomaticMin: Boolean;
|
||||
AutomaticMajorInterval: Boolean;
|
||||
AutomaticMinorInterval: Boolean;
|
||||
AxisLine: TsChartLineRec;
|
||||
MajorGridLines: TsChartLineRec;
|
||||
MinorGridLines: TsChartLineRec;
|
||||
MajorTickLines: TsChartLineRec;
|
||||
MinorTickLines: TsChartLineRec;
|
||||
Inverted: Boolean;
|
||||
// CaptionFont: TsChartFontRec;
|
||||
LabelFont: TsChartFontRec;
|
||||
LabelFormat: String;
|
||||
LabelRotation: Integer;
|
||||
Logarithmic: Boolean;
|
||||
MajorInterval: Double;
|
||||
MinorInterval: Double;
|
||||
Position: TsChartAxisPosition;
|
||||
// ShowCaption: Boolean;
|
||||
ShowLabels: Boolean;
|
||||
Visible: Boolean;
|
||||
procedure FromAxis(Axis: TsChartAxis);
|
||||
procedure ToAxis(Axis: TsChartAxis);
|
||||
class operator = (A, B: TsChartAxisRec): Boolean;
|
||||
end;
|
||||
|
||||
TsChartCaptionRec = record
|
||||
Font: TsChartFontRec;
|
||||
Rotation: Integer;
|
||||
Visible: Boolean;
|
||||
procedure FromChart(AChart: TsChart; AType: TsChartCaptionType);
|
||||
procedure ToChart(AChart: TsChart; AType: TsChartCaptionType);
|
||||
class operator = (A, B: TsChartCaptionRec): Boolean;
|
||||
end;
|
||||
|
||||
{----------------------------------------------------------------------------}
|
||||
|
||||
TsChartStyle = class
|
||||
private
|
||||
FStyleType: TsChartStyleType;
|
||||
public
|
||||
constructor Create(AStyleType: TsChartStyleType); virtual;
|
||||
procedure ApplyToChart(AChart: TsChart); virtual; abstract;
|
||||
procedure ExtractFromChart(AChart: TsChart); virtual; abstract;
|
||||
property StyleType: TsChartStyleType read FStyleType;
|
||||
end;
|
||||
|
||||
TsChartBackgroundStyle = class(TsChartStyle)
|
||||
private
|
||||
FBackgroundType: TsChartBackgroundType;
|
||||
FBackground: TsChartFillRec;
|
||||
FBorder: TsChartLineRec;
|
||||
public
|
||||
constructor Create(AType: TsChartBackgroundType);
|
||||
procedure ApplyToChart(AChart: TsChart); override;
|
||||
procedure ExtractFromChart(AChart: TsChart); override;
|
||||
property BackgroundType: TsChartBackgroundType read FBackgroundType write FBackgroundType;
|
||||
|
||||
property Background: TsChartFillRec read FBackground;
|
||||
property Border: TsChartLineRec read FBorder;
|
||||
end;
|
||||
|
||||
TsChartAxisStyle = class(TsChartStyle)
|
||||
private
|
||||
FAxis: TsChartAxisRec;
|
||||
FAxisType: TsChartAxisType;
|
||||
public
|
||||
constructor Create(AType: TsChartAxisType);
|
||||
procedure ApplyToChart(AChart: TsChart); override;
|
||||
procedure ExtractFromChart(AChart: TsChart); override;
|
||||
|
||||
property Axis: TsChartAxisRec read FAxis write FAxis;
|
||||
property AxisType: TsChartAxisType read FAxisType write FAxisType;
|
||||
end;
|
||||
|
||||
TsChartCaptionStyle = class(TsChartStyle)
|
||||
private
|
||||
FCaption: TsChartCaptionRec;
|
||||
FCaptionType: TsChartCaptionType;
|
||||
public
|
||||
constructor Create(AType: TsChartCaptionType);
|
||||
procedure ApplyToChart(AChart: TsChart); override;
|
||||
procedure ExtractFromChart(AChart: TsChart); override;
|
||||
|
||||
property Caption: TsChartCaptionRec read FCaption write FCaption;
|
||||
property CaptionType: TsChartCaptionType read FCaptionType write FCaptionType;
|
||||
end;
|
||||
|
||||
{ ---------------------------------------------------------------------------}
|
||||
|
||||
TsChartStyleList = class(TFPList)
|
||||
protected
|
||||
|
||||
public
|
||||
destructor Destroy; override;
|
||||
procedure AddChartBackgroundStyle(AChart: TsChart; AStyleType: TsChartStyleType);
|
||||
procedure AddChartAxisStyle(AChart: TsChart; AType: TsChartAxisType);
|
||||
procedure AddChartBackgroundStyle(AChart: TsChart; AType: TsChartBackgroundType);
|
||||
procedure AddChartCaptionStyle(AChart: TsChart; AType: TsChartCaptionType);
|
||||
procedure Clear;
|
||||
function FindChartBackgroundStyle(AChart: TsChart; AStyleType: TsChartStyleType): Integer;
|
||||
function FindChartAxisStyle(AChart: TsChart; AType: TsChartAxisType): Integer;
|
||||
function FindChartBackgroundStyle(AChart: TsChart; AType: TsChartBackgroundType): Integer;
|
||||
function FindChartCaptionStyle(AChart: TsChart; AType: TsChartCaptionType): Integer;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
{ TsChartStyle }
|
||||
{==============================================================================}
|
||||
{ Style records }
|
||||
{==============================================================================}
|
||||
|
||||
constructor TsChartStyle.Create(AStyleType: TsChartStyleType);
|
||||
{ TsFontRec }
|
||||
procedure TsChartFontRec.FromFont(AFont: TsFont);
|
||||
begin
|
||||
FStyleType := AStyleType;
|
||||
FontName := AFont.FontName;
|
||||
Size := AFont.Size;
|
||||
Style := AFont.Style;
|
||||
Color := AFont.Color;
|
||||
Position := AFont.Position;
|
||||
end;
|
||||
|
||||
procedure TsChartFontRec.ToFont(AFont: TsFont);
|
||||
begin
|
||||
AFont.FontName := FontName;
|
||||
AFont.Size := Size;
|
||||
AFont.Style := Style;
|
||||
AFont.Color := Color;
|
||||
AFont.Position := Position;
|
||||
end;
|
||||
|
||||
class operator TsChartFontRec.= (A, B: TsChartFontRec): Boolean;
|
||||
begin
|
||||
Result := (A.FontName = B.FontName) and (A.Size = B.Size) and
|
||||
(A.Style = B.Style) and (A.Color = B.Color) and
|
||||
(A.Position = B.Position);
|
||||
end;
|
||||
|
||||
{ TsChartLineRec }
|
||||
procedure TsChartLineRec.FromLine(ALine: TsChartLine);
|
||||
begin
|
||||
Style := ALine.Style;
|
||||
Width := ALine.Width;
|
||||
Color := ALine.Color;
|
||||
Transparency := ALine.Transparency;
|
||||
end;
|
||||
|
||||
procedure TsChartLineRec.ToLine(ALine: TsChartLine);
|
||||
begin
|
||||
ALine.Style := Style;
|
||||
ALine.Width := Width;
|
||||
ALine.Color := Color;
|
||||
ALine.Transparency := Transparency;
|
||||
end;
|
||||
|
||||
class operator TsChartLineRec.= (A, B: TsChartLineRec): Boolean;
|
||||
begin
|
||||
Result := (A.Style = B.Style) and (A.Width = B.Width) and
|
||||
(A.Color = B.Color) and (A.Transparency = B.Transparency);
|
||||
end;
|
||||
|
||||
{ TsChartFillRec }
|
||||
procedure TsChartFillRec.FromFill(AFill: TsChartFill);
|
||||
begin
|
||||
Style := AFill.Style;
|
||||
FgColor := AFill.FgColor;
|
||||
BgColor := AFill.BgColor;
|
||||
end;
|
||||
|
||||
procedure TsChartFillRec.ToFill(AFill: TsChartFill);
|
||||
begin
|
||||
AFill.Style := Style;
|
||||
AFill.FgColor := FgColor;
|
||||
AFill.BgColor := BgColor;
|
||||
end;
|
||||
|
||||
class operator TsChartFillRec.= (A, B: TsChartFillRec): Boolean;
|
||||
begin
|
||||
Result := (A.Style = B.Style) and (A.FgColor = B.FgColor) and (A.BgColor = B.BgColor);
|
||||
end;
|
||||
|
||||
{ TsChartAxisRec }
|
||||
procedure TsChartAxisRec.FromAxis(Axis: TsChartAxis);
|
||||
begin
|
||||
AutomaticMax := Axis.AutomaticMax;
|
||||
AutomaticMin := Axis.AutomaticMin;
|
||||
AutomaticMajorInterval := Axis.AutomaticMajorInterval;
|
||||
AutomaticMinorInterval := Axis.AutomaticMinorSteps;
|
||||
AxisLine.FromLine(Axis.AxisLine);
|
||||
MajorGridLines.FromLine(Axis.MajorGridLines);
|
||||
MinorGridLines.FromLine(Axis.MinorGridLines);
|
||||
MajorTickLines.FromLine(Axis.MajorTickLines);
|
||||
MinorTickLines.FromLine(Axis.MinorTickLines);
|
||||
Inverted := Axis.Inverted;
|
||||
// CaptionFont.FromFont(Axis.Font);
|
||||
LabelFont.FromFont(Axis.LabelFont);
|
||||
LabelFormat := Axis.LabelFormat;
|
||||
LabelRotation := Axis.LabelRotation;
|
||||
Logarithmic := Axis.Logarithmic;
|
||||
MajorInterval := Axis.MajorInterval;
|
||||
MinorInterval := Axis.MinorSteps;
|
||||
Position := Axis.Position;
|
||||
// ShowCaption := Axis.ShowCaption;
|
||||
ShowLabels := Axis.ShowLabels;
|
||||
Visible := Axis.Visible;
|
||||
end;
|
||||
|
||||
procedure TsChartAxisRec.ToAxis(Axis: TsChartAxis);
|
||||
begin
|
||||
Axis.AutomaticMax := AutomaticMax;
|
||||
Axis.AutomaticMin := AutomaticMin;
|
||||
Axis.AutomaticMajorInterval := AutomaticMajorInterval;
|
||||
Axis.AutomaticMinorSteps := AutomaticMinorInterval;
|
||||
AxisLine.ToLine(Axis.AxisLine);
|
||||
MajorGridLines.ToLine(Axis.MajorGridLines);
|
||||
MinorGridLines.ToLine(Axis.MinorGridLines);
|
||||
MajorTickLines.ToLine(Axis.MajorTickLines);
|
||||
MinorTickLines.ToLine(Axis.MinorTickLines);
|
||||
Axis.Inverted := Inverted;
|
||||
// CaptionFont.ToFont(Axis.Font);
|
||||
LabelFont.ToFont(Axis.LabelFont);
|
||||
Axis.LabelFormat := LabelFormat;
|
||||
Axis.LabelRotation := LabelRotation;
|
||||
Axis.Logarithmic := Logarithmic;
|
||||
Axis.MajorInterval := MajorInterval;
|
||||
Axis.MinorSteps := MinorInterval;
|
||||
Axis.Position := Position;
|
||||
// Axis.ShowCaption := ShowCaption;
|
||||
Axis.Visible := Visible;
|
||||
Axis.ShowLabels := ShowLabels;
|
||||
end;
|
||||
|
||||
class operator TsChartAxisRec.= (A, B: TsChartAxisRec): Boolean;
|
||||
begin
|
||||
Result := (A.AutomaticMax = B.AutomaticMax) and (A.AutomaticMin = B.AutomaticMin) and
|
||||
(A.AutomaticMajorInterval = B.AutomaticMajorInterval) and
|
||||
(A.AutomaticMinorInterval = B.AutomaticMinorInterval) and
|
||||
(A.AxisLine = B.AxisLine) and
|
||||
(A.MajorGridLines = B.MajorGridLines) and
|
||||
(A.MinorGridLines = B.MinorGridLines) and
|
||||
(A.MajorTickLines = B.MajorTickLines) and
|
||||
(A.MinorTickLines = B.MinorTickLines) and
|
||||
(A.Inverted = B.Inverted) and
|
||||
// (A.CaptionFont = B.CaptionFont) and
|
||||
(A.LabelFont = B.LabelFont) and
|
||||
(A.LabelFormat = B.LabelFormat) and
|
||||
(A.LabelRotation = B.LabelRotation) and
|
||||
(A.Logarithmic = B.Logarithmic) and
|
||||
(A.MajorInterval = B.MajorInterval) and
|
||||
(A.MinorInterval = B.MinorInterval) and
|
||||
(A.Position = B.Position) and
|
||||
// (A.ShowCaption = B.ShowCaption) and
|
||||
(A.ShowLabels = B.ShowLabels) and
|
||||
(A.Visible = B.Visible);
|
||||
end;
|
||||
|
||||
{ TsChartCaptionRec }
|
||||
|
||||
procedure TsChartCaptionRec.FromChart(AChart: TsChart; AType: TsChartCaptionType);
|
||||
begin
|
||||
case AType of
|
||||
cctTitle:
|
||||
begin
|
||||
Font.FromFont(AChart.Title.Font);
|
||||
Visible := AChart.Title.ShowCaption;
|
||||
end;
|
||||
cctSubtitle:
|
||||
begin
|
||||
Font.FromFont(AChart.Subtitle.Font);
|
||||
Visible := AChart.Subtitle.ShowCaption;
|
||||
end;
|
||||
cctPrimaryX:
|
||||
begin
|
||||
Font.FromFont(AChart.XAxis.CaptionFont);
|
||||
Visible := AChart.XAxis.ShowCaption;
|
||||
end;
|
||||
cctPrimaryY:
|
||||
begin
|
||||
Font.FromFont(AChart.YAxis.CaptionFont);
|
||||
Visible := AChart.YAxis.ShowCaption;
|
||||
end;
|
||||
cctSecondaryX:
|
||||
begin
|
||||
Font.FromFont(AChart.X2Axis.CaptionFont);
|
||||
Visible := AChart.X2Axis.ShowCaption;
|
||||
end;
|
||||
cctSecondaryY:
|
||||
begin
|
||||
Font.FromFont(AChart.Y2Axis.CaptionFont);
|
||||
Visible := AChart.Y2Axis.ShowCaption;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TsChartCaptionRec.ToChart(AChart: TsChart; AType: TsChartCaptionType);
|
||||
begin
|
||||
case AType of
|
||||
cctTitle:
|
||||
begin
|
||||
Font.ToFont(AChart.Title.Font);
|
||||
AChart.Title.ShowCaption := Visible;
|
||||
end;
|
||||
cctSubtitle:
|
||||
begin
|
||||
Font.ToFont(AChart.Subtitle.Font);
|
||||
AChart.Subtitle.ShowCaption := Visible;
|
||||
end;
|
||||
cctPrimaryX:
|
||||
begin
|
||||
Font.ToFont(AChart.XAxis.CaptionFont);
|
||||
AChart.XAxis.ShowCaption := Visible;
|
||||
end;
|
||||
cctPrimaryY:
|
||||
begin
|
||||
Font.ToFont(AChart.YAxis.CaptionFont);
|
||||
AChart.YAxis.ShowCaption := Visible;
|
||||
end;
|
||||
cctSecondaryX:
|
||||
begin
|
||||
Font.ToFont(AChart.X2Axis.CaptionFont);
|
||||
AChart.X2Axis.ShowCaption := Visible;
|
||||
end;
|
||||
cctSecondaryY:
|
||||
begin
|
||||
Font.ToFont(AChart.Y2Axis.CaptionFont);
|
||||
AChart.Y2Axis.ShowCaption := Visible;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
class operator TsChartCaptionRec.= (A, B: TsChartCaptionRec): Boolean;
|
||||
begin
|
||||
Result := (A.Font = B.Font) and (A.Visible = B.Visible);
|
||||
end;
|
||||
|
||||
|
||||
{ TsChartBackgroundstyle }
|
||||
|
||||
constructor TsChartBackgroundStyle.Create(AType: TsChartBackgroundType);
|
||||
begin
|
||||
inherited Create;
|
||||
FBackgroundType := AType;
|
||||
end;
|
||||
|
||||
procedure TsChartBackgroundStyle.ApplyToChart(AChart: TsChart);
|
||||
begin
|
||||
case FStyleType of
|
||||
cstBackground:
|
||||
case FBackgroundType of
|
||||
cbtBackground:
|
||||
begin
|
||||
AChart.Background.FromRecord(FBackground);
|
||||
AChart.Border.FromRecord(FBorder);
|
||||
FBackground.ToFill(AChart.Background);
|
||||
FBorder.ToLine(AChart.Border);
|
||||
end;
|
||||
cstWall:
|
||||
cbtWall:
|
||||
begin
|
||||
AChart.PlotArea.Background.FromRecord(FBackground);
|
||||
AChart.PlotArea.Border.FromRecord(FBorder);
|
||||
FBackground.ToFill(AChart.PlotArea.Background);
|
||||
FBorder.ToLine(AChart.PlotArea.Border);
|
||||
end;
|
||||
cstFloor:
|
||||
cbtFloor:
|
||||
begin
|
||||
AChart.Floor.Background.FromRecord(FBackGround);
|
||||
AChart.Floor.Border.FromRecord(FBorder);
|
||||
FBackground.ToFill(AChart.Floor.Background);
|
||||
FBorder.ToLine(AChart.Floor.Border);
|
||||
end;
|
||||
else
|
||||
raise Exception.Create('Unknown background style.');
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TsChartBackgroundStyle.ExtractFromChart(AChart: TsChart);
|
||||
begin
|
||||
case FStyleType of
|
||||
cstBackground:
|
||||
case FBackgroundType of
|
||||
cbtBackground:
|
||||
begin
|
||||
FBackground := AChart.Background.ToRecord;
|
||||
FBorder := AChart.Border.ToRecord;
|
||||
FBackground.FromFill(AChart.Background);
|
||||
FBorder.FromLine(AChart.Border);
|
||||
end;
|
||||
cstWall:
|
||||
cbtWall:
|
||||
begin
|
||||
FBackground := AChart.PlotArea.Background.ToRecord;
|
||||
FBorder := AChart.PlotArea.Border.ToRecord;
|
||||
FBackground.FromFill(AChart.PlotArea.Background);
|
||||
FBorder.FromLine(AChart.PlotArea.Border);
|
||||
end;
|
||||
cstFloor:
|
||||
cbtFloor:
|
||||
begin
|
||||
FBackground := AChart.Floor.Background.ToRecord;
|
||||
FBorder := AChart.Floor.Border.ToRecord;
|
||||
FBackground.FromFill(AChart.Floor.Background);
|
||||
FBorder.FromLine(AChart.Floor.Border);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TsChartAxisStyle }
|
||||
|
||||
constructor TsChartAxisStyle.Create(AType: TsChartAxisType);
|
||||
begin
|
||||
inherited Create;
|
||||
FAxisType := AType;
|
||||
end;
|
||||
|
||||
procedure TsChartAxisStyle.ApplyToChart(AChart: TsChart);
|
||||
begin
|
||||
case FAxisType of
|
||||
catPrimaryX: Axis.ToAxis(AChart.XAxis);
|
||||
catPrimaryY: Axis.ToAxis(AChart.YAxis);
|
||||
catSecondaryX: Axis.ToAxis(AChart.X2Axis);
|
||||
catSecondaryY: Axis.ToAxis(AChart.Y2Axis);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TsChartAxisStyle.ExtractFromChart(AChart: TsChart);
|
||||
begin
|
||||
case FAxisType of
|
||||
catPrimaryX: Axis.FromAxis(AChart.XAxis);
|
||||
catPrimaryY: Axis.FromAxis(AChart.YAxis);
|
||||
catSecondaryX: Axis.FromAxis(AChart.X2Axis);
|
||||
catSecondaryY: Axis.FromAxis(AChart.Y2Axis);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
{ TsChartCaptionStyle }
|
||||
|
||||
constructor TsChartCaptionStyle.Create(AType: TsChartCaptionType);
|
||||
begin
|
||||
inherited Create;
|
||||
FCaptionType := AType;
|
||||
end;
|
||||
|
||||
procedure TsChartCaptionStyle.ApplyToChart(AChart: TsChart);
|
||||
begin
|
||||
Caption.ToChart(AChart, FCaptionType);
|
||||
end;
|
||||
|
||||
procedure TsChartCaptionStyle.ExtractFromChart(AChart: TsChart);
|
||||
begin
|
||||
Caption.FromChart(AChart, FCaptionType);
|
||||
end;
|
||||
|
||||
|
||||
{ TsChartStyleList }
|
||||
|
||||
destructor TsChartStyleList.Destroy;
|
||||
@ -102,12 +485,28 @@ begin
|
||||
inherited;
|
||||
end;
|
||||
|
||||
{ Adds the style of the specified axis type in the given chart as new style to
|
||||
the style list. But only if the same style does not yet exist. }
|
||||
procedure TsChartStyleList.AddChartAxisStyle(AChart: TsChart;
|
||||
AType: TsChartAxisType);
|
||||
begin
|
||||
FindChartAxisStyle(AChart, AType);
|
||||
end;
|
||||
|
||||
{ Adds the style of the specified caption in the given chart as new style to
|
||||
the style list. But only if the same style does not yet exist. }
|
||||
procedure TsChartStyleList.AddChartCaptionStyle(AChart: TsChart;
|
||||
AType: TsChartCaptionType);
|
||||
begin
|
||||
FindChartCaptionStyle(AChart, AType);
|
||||
end;
|
||||
|
||||
{ Adds the style of the specified type in the given chart as new style to the
|
||||
style list. But only if the same style does not yet exist. }
|
||||
procedure TsChartStyleList.AddChartBackgroundStyle(AChart: TsChart;
|
||||
AStyleType: TsChartStyleType);
|
||||
AType: TsChartBackgroundType);
|
||||
begin
|
||||
FindChartBackgroundStyle(AChart, AStyleType);
|
||||
FindChartBackgroundStyle(AChart, AType);
|
||||
end;
|
||||
|
||||
procedure TsChartStyleList.Clear;
|
||||
@ -119,26 +518,25 @@ begin
|
||||
inherited Clear;
|
||||
end;
|
||||
|
||||
{ Searches whether the background style of the specified chart is already in the
|
||||
{ Searches whether the style of the specified axis is already in the
|
||||
list. If not, a new style is created and added.
|
||||
The type of the requested background must be provided as parameter.
|
||||
The type of the requested axis must be provided as parameter.
|
||||
Returns the index of the style. }
|
||||
function TsChartStyleList.FindChartBackgroundStyle(AChart: TsChart;
|
||||
AStyleType: TsChartStyleType): Integer;
|
||||
function TsChartStyleList.FindChartAxisStyle(AChart: TsChart;
|
||||
AType: TsChartAxisType): Integer;
|
||||
var
|
||||
newStyle, style: TsChartBackgroundStyle;
|
||||
newStyle, style: TsChartAxisStyle;
|
||||
i: Integer;
|
||||
begin
|
||||
Result := -1;
|
||||
newStyle := TsChartBackgroundStyle.Create(AStyleType);
|
||||
newStyle := TsChartAxisStyle.Create(AType);
|
||||
newStyle.ExtractFromChart(AChart);
|
||||
for i := 0 to Count-1 do
|
||||
begin
|
||||
if (TsChartStyle(Items[i]) is TsChartBackgroundStyle) and
|
||||
(TsChartStyle(Items[i]).StyleType = AStyleType) then
|
||||
if (TsChartStyle(Items[i]) is TsChartAxisStyle) then
|
||||
begin
|
||||
style := TsChartBackgroundStyle(Items[i]);
|
||||
if (style.Background = newStyle.Background) then
|
||||
style := TsChartAxisStyle(Items[i]);
|
||||
if (style.AxisType = AType) and (style.Axis = newStyle.Axis) then
|
||||
begin
|
||||
Result := i;
|
||||
break;
|
||||
@ -151,5 +549,68 @@ begin
|
||||
newStyle.Free;
|
||||
end;
|
||||
|
||||
{ Searches whether the background style of the specified chart is already in the
|
||||
list. If not, a new style is created and added.
|
||||
The type of the requested background must be provided as parameter.
|
||||
Returns the index of the style. }
|
||||
function TsChartStyleList.FindChartBackgroundStyle(AChart: TsChart;
|
||||
AType: TsChartBackgroundType): Integer;
|
||||
var
|
||||
newStyle, style: TsChartBackgroundStyle;
|
||||
i: Integer;
|
||||
begin
|
||||
Result := -1;
|
||||
newStyle := TsChartBackgroundStyle.Create(AType);
|
||||
newStyle.ExtractFromChart(AChart);
|
||||
for i := 0 to Count-1 do
|
||||
begin
|
||||
if (TsChartStyle(Items[i]) is TsChartBackgroundStyle) then
|
||||
begin
|
||||
style := TsChartBackgroundStyle(Items[i]);
|
||||
if (style.BackgroundType = AType) and (style.Background = newStyle.Background) then
|
||||
begin
|
||||
Result := i;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
if Result = -1 then
|
||||
Result := Add(newStyle)
|
||||
else
|
||||
newStyle.Free;
|
||||
end;
|
||||
|
||||
{ Searches whether the style of the specified caption is already in the
|
||||
list. If not, a new style is created and added.
|
||||
The type of the requested axis must be provided as parameter.
|
||||
Returns the index of the style. }
|
||||
function TsChartStyleList.FindChartCaptionStyle(AChart: TsChart;
|
||||
AType: TsChartCaptionType): Integer;
|
||||
var
|
||||
newStyle, style: TsChartCaptionStyle;
|
||||
i: Integer;
|
||||
begin
|
||||
Result := -1;
|
||||
newStyle := TsChartCaptionStyle.Create(AType);
|
||||
newStyle.ExtractFromChart(AChart);
|
||||
for i := 0 to Count-1 do
|
||||
begin
|
||||
if (TsChartStyle(Items[i]) is TsChartCaptionStyle) then
|
||||
begin
|
||||
style := TsChartCaptionStyle(Items[i]);
|
||||
if {(style.AxisType = AType) and} (style.Caption = newStyle.Caption) then
|
||||
begin
|
||||
Result := i;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
if Result = -1 then
|
||||
Result := Add(newStyle)
|
||||
else
|
||||
newStyle.Free;
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
|
||||
|
@ -286,7 +286,9 @@ type
|
||||
function WriteWordwrapStyleXMLAsString(const AFormat: TsCellFormat): String;
|
||||
|
||||
{ Chart support }
|
||||
function GetChartAxisStyleAsXML(AChart: TsChart; AStyleIndex: Integer; AIndent: Integer): String;
|
||||
function GetChartBackgroundStyleAsXML(AChart: TsChart; AStyleIndex: Integer; AIndent: Integer): String;
|
||||
function GetChartCaptionStyleAsXML(AChart: TsChart; AStyleIndex: Integer; AIndent: Integer): String;
|
||||
|
||||
procedure PrepareChartTable(AChart: TsChart; AWorksheet: TsBasicWorksheet);
|
||||
procedure WriteChart(AStream: TStream; AChart: TsChart);
|
||||
@ -5887,9 +5889,22 @@ begin
|
||||
for i := 0 to book.GetChartCount-1 do
|
||||
begin
|
||||
chart := book.GetChartByIndex(i);
|
||||
styles.AddChartBackGroundStyle(chart, cstBackground);
|
||||
styles.AddChartBackgroundStyle(chart, cstWall);
|
||||
styles.AddChartBackgroundStyle(chart, cstFloor);
|
||||
|
||||
styles.AddChartBackGroundStyle(chart, cbtBackground);
|
||||
styles.AddChartBackgroundStyle(chart, cbtWall);
|
||||
styles.AddChartBackgroundStyle(chart, cbtFloor);
|
||||
|
||||
styles.AddChartAxisStyle(chart, catPrimaryX);
|
||||
styles.AddChartAxisStyle(chart, catPrimaryY);
|
||||
styles.AddChartAxisStyle(chart, catSecondaryX);
|
||||
styles.AddChartAxisStyle(chart, catSecondaryY);
|
||||
|
||||
styles.AddChartCaptionStyle(chart, cctPrimaryX);
|
||||
styles.AddChartCaptionStyle(chart, cctPrimaryY);
|
||||
styles.AddChartCaptionStyle(chart, cctSecondaryX);
|
||||
styles.AddChartCaptionStyle(chart, cctSecondaryY);
|
||||
styles.AddChartCaptionStyle(chart, cctTitle);
|
||||
styles.AddChartCaptionStyle(chart, cctSubTitle);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -6778,44 +6793,55 @@ var
|
||||
axis: TsChartAxis;
|
||||
series: TsChartSeries;
|
||||
sheet: TsWorksheet;
|
||||
styles: TsChartStyleList;
|
||||
refStr: String;
|
||||
styleID, titleStyleID: Integer;
|
||||
majorGridStyleID: Integer = 8;
|
||||
minorGridstyleID: Integer = 9;
|
||||
styleIdx, titleStyleIdx: Integer;
|
||||
// styleID, titleStyleID: Integer;
|
||||
majorGridStyleID: Integer = 800;
|
||||
minorGridstyleID: Integer = 900;
|
||||
r1, c1, r2, c2: Cardinal;
|
||||
begin
|
||||
ind := DupeString(' ', AIndent);
|
||||
sheet := TsWorkbook(FWorkbook).GetWorksheetByIndex(AChart.SheetIndex);
|
||||
styles := TsChartStyleList(FChartStyleList);
|
||||
|
||||
if IsX then
|
||||
begin
|
||||
if IsPrimary then
|
||||
begin
|
||||
axis := AChart.XAxis;
|
||||
styleID := 6;
|
||||
styleIdx := styles.FindChartAxisStyle(AChart, catPrimaryX);
|
||||
titleStyleIdx := styles.FindChartCaptionStyle(AChart, cctPrimaryX);
|
||||
//styleID := 6;
|
||||
end else
|
||||
begin
|
||||
axis := AChart.X2Axis;
|
||||
styleID := 10;
|
||||
styleIdx := styles.FindChartAxisStyle(AChart, catSecondaryX);
|
||||
titleStyleIdx := styles.FindChartCaptionStyle(AChart, cctSecondaryX);
|
||||
//styleID := 10;
|
||||
end;
|
||||
titleStyleID := 7;
|
||||
//titleStyleID := 7;
|
||||
end else
|
||||
begin
|
||||
if IsPrimary then
|
||||
begin
|
||||
axis := AChart.YAxis;
|
||||
styleID := 11;
|
||||
styleIdx := styles.FindChartAxisStyle(AChart, catPrimaryY);
|
||||
titleStyleIdx := styles.FindChartCaptionStyle(AChart, cctPrimaryY);
|
||||
//styleID := 11;
|
||||
end else
|
||||
begin
|
||||
axis := AChart.Y2Axis;
|
||||
styleID := 12;
|
||||
styleIdx := styles.FindChartAxisStyle(AChart, catSecondaryY);
|
||||
titleStyleIdx := styles.FindChartCaptionStyle(AChart, cctSecondaryY);
|
||||
//styleID := 12;
|
||||
end;
|
||||
titleStyleID := 12;
|
||||
//titleStyleID := 12;
|
||||
end;
|
||||
|
||||
AppendToStream(AStream, Format(
|
||||
ind + '<chart:axis chart:dimension="%s" chart:name="%s-%s" chart:style-name="ch%d" chartooo:axis-type="auto">' + LE,
|
||||
[ AXIS_ID[IsX], AXIS_LEVEL[IsPrimary], AXIS_ID[IsX], styleID ]
|
||||
[ AXIS_ID[IsX], AXIS_LEVEL[IsPrimary], AXIS_ID[IsX], styleIdx + 1 ]
|
||||
));
|
||||
|
||||
if IsX and (not AChart.IsScatterChart) and (AChart.Series.Count > 0) then
|
||||
@ -6832,21 +6858,21 @@ begin
|
||||
));
|
||||
end;
|
||||
|
||||
if axis.Caption <> '' then
|
||||
if axis.ShowCaption and (axis.Caption <> '') then
|
||||
AppendToStream(AStream, Format(
|
||||
ind + ' <chart:title chart:style-name="ch%d">' + LE +
|
||||
ind + ' <text:p>%s</text:p>' + LE +
|
||||
ind + ' </chart:title>' + LE,
|
||||
[ titleStyleID, axis.Caption ]
|
||||
[ titleStyleIdx + 1, axis.Caption ]
|
||||
));
|
||||
|
||||
if axis.ShowMajorGridLines then
|
||||
if axis.MajorGridLines.Style <> clsNoLine then
|
||||
AppendToStream(AStream, Format(
|
||||
ind + ' <chart:grid chart:style-name="ch%d" chart:class="major"/>' + LE,
|
||||
[ majorGridStyleID ]
|
||||
));
|
||||
|
||||
if axis.ShowMinorGridLines then
|
||||
if axis.MinorGridLines.Style <> clsNoLine then
|
||||
AppendToStream(AStream, Format(
|
||||
ind + ' <chart:grid chart:style-name="ch%d" chart:class="minor"/>' + LE,
|
||||
[ minorGridStyleID ]
|
||||
@ -6869,7 +6895,7 @@ begin
|
||||
if chartClass <> '' then
|
||||
chartClass := ' chart:class="chart:' + chartClass + '"';
|
||||
|
||||
idx := TsChartStyleList(FChartStyleList).FindChartBackgroundStyle(AChart, cstBackground);
|
||||
idx := TsChartStyleList(FChartStyleList).FindChartBackgroundStyle(AChart, cbtBackground);
|
||||
|
||||
AppendToStream(AStream, Format(
|
||||
' <chart:chart svg:width="%.3fmm" svg:height="%.3fmm" xlink:href=".." ' + LE +
|
||||
@ -6887,7 +6913,7 @@ procedure TsSpreadOpenDocWriter.WriteChartLegend(AStream: TStream; AChart: TsCha
|
||||
AIndent: Integer);
|
||||
var
|
||||
ind: String;
|
||||
legendStyleID: Integer = 4;
|
||||
legendStyleID: Integer = 400;
|
||||
begin
|
||||
if (not AChart.Legend.Visible) then
|
||||
exit;
|
||||
@ -6906,7 +6932,7 @@ procedure TsSpreadOpenDocWriter.WriteChartPlotArea(AStream: TStream;
|
||||
var
|
||||
ind: String;
|
||||
i: Integer;
|
||||
plotAreaStyleID: Integer = 5;
|
||||
plotAreaStyleID: Integer = 500;
|
||||
wallStyleIdx, floorStyleIdx: Integer;
|
||||
begin
|
||||
ind := DupeString(' ', AIndent);
|
||||
@ -6922,8 +6948,8 @@ begin
|
||||
for i := 0 to AChart.Series.Count-1 do
|
||||
WriteChartSeries(AStream, AChart, i, AIndent + 2);
|
||||
|
||||
wallStyleIdx := TsChartStyleList(FChartStyleList).FindChartBackgroundStyle(AChart, cstWall);
|
||||
floorStyleIdx := TsChartStyleList(FChartStyleList).FindChartBackgroundStyle(AChart, cstFloor);
|
||||
wallStyleIdx := TsChartStyleList(FChartStyleList).FindChartBackgroundStyle(AChart, cbtWall);
|
||||
floorStyleIdx := TsChartStyleList(FChartStyleList).FindChartBackgroundStyle(AChart, cbtFloor);
|
||||
|
||||
AppendToStream(AStream, Format(
|
||||
ind + ' <chart:wall chart:style-name="ch%d"/>' + LE +
|
||||
@ -6962,7 +6988,7 @@ begin
|
||||
rfAllRel, false);
|
||||
count := series.YRange.Row2 - series.YRange.Row1 + 1;
|
||||
|
||||
seriesStyleID := 14 + ASeriesIndex;
|
||||
seriesStyleID := (14 + ASeriesIndex) * 100;
|
||||
|
||||
AppendToStream(AStream, Format(
|
||||
ind + '<chart:series chart:style-name="ch%d" ' +
|
||||
@ -6980,6 +7006,81 @@ begin
|
||||
);
|
||||
end;
|
||||
|
||||
function TsSpreadOpenDocWriter.GetChartAxisStyleAsXML(
|
||||
AChart: TsChart; AStyleIndex: Integer; AIndent: Integer): String;
|
||||
var
|
||||
ind: String;
|
||||
style: TsChartAxisStyle;
|
||||
displayLabels: string = '';
|
||||
logarithmic: String = '';
|
||||
strokeColor: String = '';
|
||||
styleRotationAngle: String = '';
|
||||
fontSize: String = '';
|
||||
fontColor: String = '';
|
||||
begin
|
||||
if AStyleIndex = -1 then
|
||||
begin
|
||||
Result := '';
|
||||
exit;
|
||||
end;
|
||||
|
||||
style := TsChartAxisStyle(FChartStyleList[AStyleIndex]);
|
||||
|
||||
if not style.Axis.Visible then
|
||||
exit;
|
||||
|
||||
if style.Axis.ShowLabels then
|
||||
displayLabels := 'chart:display-label="true" '
|
||||
else
|
||||
displayLabels := '';
|
||||
|
||||
if style.Axis.Logarithmic then
|
||||
logarithmic := 'logarithmic="true" '
|
||||
else
|
||||
logarithmic := '';
|
||||
|
||||
if style.Axis.LabelRotation <> 0 then
|
||||
styleRotationAngle := 'style:rotation-ange="' + IntToStr(style.Axis.LabelRotation) + '" ';
|
||||
|
||||
strokeColor := 'svg:stroke-color="' + ColorToHTMLColorStr(style.Axis.AxisLine.Color) + '" ';
|
||||
|
||||
fontSize := Format('fo:font-size="%.1fpt" style:font-size-asian="%.1fpt" style:font-size-complex="%.1fpt" ',
|
||||
[style.Axis.LabelFont.Size, style.Axis.LabelFont.Size, style.Axis.LabelFont.Size],
|
||||
FPointSeparatorSettings
|
||||
);
|
||||
fontColor := 'fo:color="' + ColorToHTMLColorStr(style.Axis.LabelFont.Color) + '" ';
|
||||
|
||||
(*
|
||||
<style:style style:name="ch10" style:family="chart"
|
||||
style:data-style-name="N0">
|
||||
<style:chart-properties chart:display-label="true"
|
||||
chart:logarithmic="false"
|
||||
chart:minimum="-2" chart:maximum="2" chart:interval-major="1"
|
||||
chart:interval-minor-divisor="4" chart:reverse-direction="false"
|
||||
text:line-break="false" loext:try-staggering-first="false"
|
||||
chart:link-data-style-to-source="true" chart:axis-position="1"/>
|
||||
<style:graphic-properties svg:stroke-color="#b3b3b3"/>
|
||||
<style:text-properties fo:font-size="10pt" style:font-size-asian="10pt"
|
||||
style:font-size-complex="10pt"/>
|
||||
*)
|
||||
ind := DupeString(' ', AIndent);
|
||||
Result := Format(
|
||||
ind + '<style:style style:name="ch%d" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:chart-properties %s%s%s/>' + LE +
|
||||
ind + ' <style:graphic-properties %s/>' + LE +
|
||||
ind + ' <style:text-properties %s%s/>' + LE +
|
||||
ind + '</style:style>' + LE,
|
||||
[ AStyleIndex + 1,
|
||||
// chart-properties
|
||||
displayLabels, logarithmic, styleRotationAngle,
|
||||
// graphic-properties
|
||||
strokeColor,
|
||||
// text-properties
|
||||
fontSize, fontColor
|
||||
]
|
||||
);
|
||||
end;
|
||||
|
||||
function TsSpreadOpenDocWriter.GetChartBackgroundStyleAsXML(
|
||||
AChart: TsChart; AStyleIndex: Integer; AIndent: Integer): String;
|
||||
var
|
||||
@ -7018,7 +7119,56 @@ begin
|
||||
ind + '<style:style style:name="ch%d" style:family="chart">' + LE +
|
||||
ind + ' <style:graphic-properties %s%s%s%s />' + LE +
|
||||
ind + '</style:style>' + LE,
|
||||
[ AStyleIndex+1, drawStroke, strokeColor, drawFill, drawFillColor ]
|
||||
[ AStyleIndex+1,
|
||||
drawStroke, strokeColor, drawFill, drawFillColor ]
|
||||
);
|
||||
end;
|
||||
|
||||
{
|
||||
<style:style style:name="ch7" style:family="chart">
|
||||
<style:chart-properties chart:auto-position="true" style:rotation-angle="0"/>
|
||||
<style:text-properties fo:font-size="9pt" style:font-size-asian="9pt" style:font-size-complex="9pt"/>
|
||||
</style:style>
|
||||
}
|
||||
function TsSpreadOpenDocWriter.GetChartCaptionStyleAsXML(AChart: TsChart;
|
||||
AStyleIndex: Integer; AIndent: Integer): String;
|
||||
var
|
||||
style: TsChartCaptionStyle;
|
||||
ind: String;
|
||||
fontSize: String = '';
|
||||
fontColor: String = '';
|
||||
styleRotationAngle: String = '';
|
||||
begin
|
||||
Result := '';
|
||||
|
||||
if AStyleIndex = -1 then
|
||||
exit;
|
||||
|
||||
style := TsChartCaptionStyle(FChartStyleList[AStyleIndex]);
|
||||
|
||||
if not style.Caption.Visible then
|
||||
exit;
|
||||
|
||||
if style.Caption.Rotation <> 0 then
|
||||
styleRotationAngle := Format('style:rotation-angle="%d" ', [style.Caption.Rotation]);
|
||||
|
||||
fontSize := Format('fo:font-size="%.1fpt" style:font-size-asian="%.1fpt" style:font-size-complex="%.1fpt" ',
|
||||
[ style.Caption.Font.Size, style.Caption.Font.Size, style.Caption.Font.Size ],
|
||||
FPointSeparatorSettings
|
||||
);
|
||||
fontColor := Format('fo:color="%s" ', [ColorToHTMLColorStr(style.Caption.Font.Color)]);
|
||||
|
||||
ind := DupeString(' ', AIndent);
|
||||
Result := Format(
|
||||
ind + '<style:style style:name="ch%d" style:family="chart">' + LE +
|
||||
ind + ' <style:chart-properties chart:auto-position="true" %s />' + LE +
|
||||
ind + ' <style:text-properties %s%s/>' + LE +
|
||||
ind + '</style:style>' + LE,
|
||||
[AStyleIndex + 1,
|
||||
// chart-properties
|
||||
styleRotationAngle,
|
||||
// text-properties
|
||||
fontSize, fontColor ]
|
||||
);
|
||||
end;
|
||||
|
||||
@ -7030,10 +7180,32 @@ var
|
||||
backGrStyleIdx: Integer;
|
||||
wallStyleIdx: Integer;
|
||||
floorStyleIdx: Integer;
|
||||
xAxisStyleIdx: Integer;
|
||||
yAxisStyleIdx: Integer;
|
||||
x2AxisStyleIdx: Integer;
|
||||
y2AxisStyleIdx: Integer;
|
||||
xAxisCaptionStyleIdx: Integer;
|
||||
yAxisCaptionStyleIdx: Integer;
|
||||
x2AxisCaptionStyleIdx: Integer;
|
||||
y2AxisCaptionStyleIdx: Integer;
|
||||
titleCaptionStyleIdx: Integer;
|
||||
subtitleCaptionStyleIdx: Integer;
|
||||
begin
|
||||
backGrStyleIdx := TsChartStyleList(FChartStyleList).FindChartBackgroundStyle(AChart, cstBackground);
|
||||
wallStyleIdx := TsChartStyleList(FChartStyleList).FindChartBackgroundStyle(AChart, cstWall);
|
||||
floorStyleIdx := TsChartStyleList(FChartStyleList).FindChartBackgroundStyle(AChart, cstFloor);
|
||||
backGrStyleIdx := TsChartStyleList(FChartStyleList).FindChartBackgroundStyle(AChart, cbtBackground);
|
||||
wallStyleIdx := TsChartStyleList(FChartStyleList).FindChartBackgroundStyle(AChart, cbtWall);
|
||||
floorStyleIdx := TsChartStyleList(FChartStyleList).FindChartBackgroundStyle(AChart, cbtFloor);
|
||||
|
||||
xAxisStyleIdx := TsChartStyleList(FChartStyleList).FindChartAxisStyle(AChart, catPrimaryX);
|
||||
yAxisStyleIdx := TsChartStyleList(FChartStyleList).FindChartAxisStyle(AChart, catPrimaryY);
|
||||
x2AxisStyleIdx := TsChartStyleList(FChartStyleList).FindChartAxisStyle(AChart, catSecondaryX);
|
||||
y2AxisStyleIdx := TsChartStyleList(FChartStyleList).FindChartAxisStyle(AChart, catSecondaryY);
|
||||
|
||||
xAxisCaptionStyleIdx := TsChartStyleList(FChartStyleList).FindChartCaptionStyle(AChart, cctPrimaryX);
|
||||
yAxisCaptionStyleIdx := TsChartStyleList(FChartStyleList).FindChartCaptionStyle(AChart, cctPrimaryY);
|
||||
x2AxisCaptionStyleIdx := TsChartStyleList(FChartStyleList).FindChartCaptionStyle(AChart, cctSecondaryX);
|
||||
y2AxisCaptionStyleIdx := TsChartStyleList(FChartStyleList).FindChartCaptionStyle(AChart, cctSecondaryY);
|
||||
titleCaptionStyleIdx := TsChartStyleList(FChartStyleList).FindChartCaptionStyle(AChart, cctTitle);
|
||||
subtitleCaptionStyleIdx := TsChartStyleList(FChartStyleList).FindChartCaptionStyle(AChart, cctSubtitle);
|
||||
|
||||
ind := DupeString(' ', AIndent);
|
||||
|
||||
@ -7063,7 +7235,7 @@ begin
|
||||
ind + ' </style:style>' + LE +
|
||||
|
||||
// ch 4: style for <chart:legend> element
|
||||
ind + ' <style:style style:name="ch4" style:family="chart">' + LE +
|
||||
ind + ' <style:style style:name="ch400" style:family="chart">' + LE +
|
||||
ind + ' <style:chart-properties chart:auto-position="true"/>' + LE +
|
||||
ind + ' <style:graphic-properties draw:stroke="none" svg:stroke-color="#b3b3b3" ' +
|
||||
'draw:fill="none" draw:fill-color="#e6e6e6"/>' + LE +
|
||||
@ -7071,7 +7243,7 @@ begin
|
||||
ind + ' </style:style>' + LE +
|
||||
|
||||
// ch5: style for <chart:plot-area> element
|
||||
ind + ' <style:style style:name="ch5" style:family="chart">' + LE +
|
||||
ind + ' <style:style style:name="ch500" style:family="chart">' + LE +
|
||||
ind + ' <style:chart-properties ' +
|
||||
'chart:symbol-type="automatic" ' +
|
||||
'chart:include-hidden-cells="false" ' +
|
||||
@ -7079,7 +7251,7 @@ begin
|
||||
'chart:auto-size="true" ' +
|
||||
'chart:treat-empty-cells="leave-gap" ' +
|
||||
'chart:right-angled-axes="true"/>' + LE +
|
||||
ind + ' </style:style>' +
|
||||
ind + ' </style:style>' + LE +
|
||||
|
||||
{
|
||||
ind + ' <style:style style:name="ch5" style:family="chart">' + LE +
|
||||
@ -7092,7 +7264,9 @@ begin
|
||||
ind + ' </style:style>' + LE +
|
||||
}
|
||||
|
||||
// ch6: style for first <chart:axis> element, primary x axis
|
||||
// Style for first <chart:axis> element, primary x axis
|
||||
GetChartAxisStyleAsXML(AChart, xAxisStyleIdx, AIndent + 2) +
|
||||
{
|
||||
ind + ' <style:style style:name="ch6" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:chart-properties chart:display-label="true" ' +
|
||||
'chart:logarithmic="false" chart:reverse-direction="false" ' +
|
||||
@ -7101,25 +7275,31 @@ begin
|
||||
ind + ' <style:graphic-properties svg:stroke-color="#b3b3b3"/>' + LE +
|
||||
ind + ' <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>' + LE +
|
||||
ind + ' </style:style>' + LE +
|
||||
}
|
||||
|
||||
// ch7: style for title at horizontal axes
|
||||
GetChartCaptionStyleAsXML(AChart, xAxisCaptionStyleIdx, AIndent + 2) +
|
||||
{
|
||||
ind + ' <style:style style:name="ch7" style:family="chart">' + LE +
|
||||
ind + ' <style:chart-properties chart:auto-position="true" style:rotation-angle="0"/>' + LE +
|
||||
ind + ' <style:text-properties fo:font-size="9pt" style:font-size-asian="9pt" style:font-size-complex="9pt"/>' + LE +
|
||||
ind + ' </style:style>' + LE +
|
||||
|
||||
}
|
||||
// ch8: style for major grid (all axes)
|
||||
ind + ' <style:style style:name="ch8" style:family="chart">' + LE +
|
||||
ind + ' <style:style style:name="ch800" style:family="chart">' + LE +
|
||||
ind + ' <style:graphic-properties svg:stroke-color="#b3b3b3"/>' + LE +
|
||||
ind + ' </style:style>' + LE +
|
||||
|
||||
// ch9: style for minor grid (all axes)
|
||||
ind + ' <style:style style:name="ch9" style:family="chart">' + LE +
|
||||
ind + ' <style:style style:name="ch900" style:family="chart">' + LE +
|
||||
ind + ' <style:graphic-properties svg:stroke-color="#dddddd"/>' + LE +
|
||||
ind + ' </style:style>' + LE +
|
||||
|
||||
// ch10: style for second <chart:axis> element, secondary x axis
|
||||
ind + ' <style:style style:name="ch10" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
GetChartAxisStyleAsXML(AChart, x2AxisStyleIdx, AIndent + 2) +
|
||||
GetChartCaptionStyleAsXML(AChart, x2AxisCaptionStyleIdx, AIndent + 2) +
|
||||
{
|
||||
ind + ' <style:style style:name="ch1000" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:chart-properties chart:display-label="true" ' +
|
||||
'chart:logarithmic="false" chart:reverse-direction="false" ' +
|
||||
'text:line-break="false" loext:try-staggering-first="false" ' +
|
||||
@ -7127,9 +7307,11 @@ begin
|
||||
ind + ' <style:graphic-properties svg:stroke-color="#b3b3b3"/>' + LE +
|
||||
ind + ' <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>' + LE +
|
||||
ind + ' </style:style>' + LE +
|
||||
|
||||
}
|
||||
// ch11: style for third <chart:axis> element: primary y axis
|
||||
ind + ' <style:style style:name="ch11" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
GetChartAxisStyleAsXML(AChart, yAxisStyleIdx, AIndent + 2) +
|
||||
{
|
||||
ind + ' <style:style style:name="ch1100" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:chart-properties chart:display-label="true" ' +
|
||||
'chart:logarithmic="false" chart:reverse-direction="false" ' +
|
||||
'text:line-break="false" loext:try-staggering-first="false" ' +
|
||||
@ -7137,15 +7319,21 @@ begin
|
||||
ind + ' <style:graphic-properties svg:stroke-color="#b3b3b3"/>' + LE +
|
||||
ind + ' <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>' + LE +
|
||||
ind + ' </style:style>' + LE +
|
||||
}
|
||||
|
||||
// ch12: style for vertical axis title (both y and y2 axis)
|
||||
ind + ' <style:style style:name="ch12" style:family="chart">' + LE +
|
||||
GetChartCaptionStyleAsXML(AChart, yAxisCaptionStyleIdx, AIndent + 2) +
|
||||
|
||||
ind + ' <style:style style:name="ch1200" style:family="chart">' + LE +
|
||||
ind + ' <style:chart-properties chart:auto-position="true" style:rotation-angle="90"/>' + LE +
|
||||
ind + ' <style:text-properties fo:font-size="9pt" style:font-size-asian="9pt" style:font-size-complex="9pt"/>' + LE +
|
||||
ind + ' </style:style>' +
|
||||
|
||||
// ch13: style for fourth <chart:axis> element: secondary y axis
|
||||
ind + ' <style:style style:name="ch13" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
GetChartAxisStyleAsXML(AChart, y2AxisStyleIdx, AIndent + 2) +
|
||||
GetChartCaptionStyleAsXML(AChart, y2AxisCaptionStyleIdx, AIndent + 2) +
|
||||
{
|
||||
ind + ' <style:style style:name="ch1300" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:chart-properties chart:display-label="true" ' +
|
||||
'chart:logarithmic="false" chart:reverse-direction="false" ' +
|
||||
'text:line-break="false" loext:try-staggering-first="false" ' +
|
||||
@ -7153,9 +7341,12 @@ begin
|
||||
ind + ' <style:graphic-properties svg:stroke-color="#b3b3b3"/>' + LE +
|
||||
ind + ' <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>' + LE +
|
||||
ind + ' </style:style>' + LE +
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ch14: style for frist series - this is for a line series
|
||||
ind + ' <style:style style:name="ch14" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:style style:name="ch1400" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:chart-properties ' +
|
||||
'chart:symbol-type="named-symbol" ' +
|
||||
'chart:symbol-name="arrow-down" ' +
|
||||
@ -7180,49 +7371,49 @@ begin
|
||||
*)
|
||||
|
||||
// ch15: style for second series - this is for a bar series
|
||||
ind + ' <style:style style:name="ch15" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:style style:name="ch1500" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:chart-properties chart:link-data-style-to-source="true"/>' + LE +
|
||||
ind + ' <style:graphic-properties draw:stroke="none" draw:fill-color="#ff420e" dr3d:edge-rounding="5%"/>' + LE +
|
||||
ind + ' <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>' + LE +
|
||||
ind + ' </style:style>' + LE +
|
||||
|
||||
// ch16: style for third series (bar series, here)
|
||||
ind + ' <style:style style:name="ch16" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:style style:name="ch1600" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:chart-properties chart:link-data-style-to-source="true"/>' + LE +
|
||||
ind + ' <style:graphic-properties draw:stroke="none" draw:fill-color="#ffd320" dr3d:edge-rounding="5%"/>' + LE +
|
||||
ind + ' <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>' + LE +
|
||||
ind + ' </style:style>' + LE +
|
||||
|
||||
// ch17: style for 4th series (bar series, here)
|
||||
ind + ' <style:style style:name="ch17" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:style style:name="ch1700" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:chart-properties chart:link-data-style-to-source="true"/>' + LE +
|
||||
ind + ' <style:graphic-properties draw:stroke="none" draw:fill-color="#579d1c" dr3d:edge-rounding="5%"/>' + LE +
|
||||
ind + ' <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>' + LE +
|
||||
ind + ' </style:style>' + LE +
|
||||
|
||||
// ch18: style for 5th series (bar series, here)
|
||||
ind + ' <style:style style:name="ch18" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:style style:name="ch1800" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:chart-properties chart:link-data-style-to-source="true"/>' + LE +
|
||||
ind + ' <style:graphic-properties draw:stroke="none" draw:fill-color="#7e0021" dr3d:edge-rounding="5%"/>' + LE +
|
||||
ind + ' <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>' + LE +
|
||||
ind + ' </style:style>' + LE +
|
||||
|
||||
// ch19: style for 6th series (bar series, here)
|
||||
ind + ' <style:style style:name="ch19" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:style style:name="ch1900" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:chart-properties chart:link-data-style-to-source="true"/>' + LE +
|
||||
ind + ' <style:graphic-properties draw:stroke="none" draw:fill-color="#83caff" dr3d:edge-rounding="5%"/>' + LE +
|
||||
ind + ' <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>' + LE +
|
||||
ind + ' </style:style>' + LE +
|
||||
|
||||
// ch20: style for 7th series (bar series, here)
|
||||
ind + ' <style:style style:name="ch20" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:style style:name="ch2000" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:chart-properties chart:link-data-style-to-source="true"/>' + LE +
|
||||
ind + ' <style:graphic-properties draw:stroke="none" draw:fill-color="#314004" dr3d:edge-rounding="5%"/>' + LE +
|
||||
ind + ' <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>' + LE +
|
||||
ind + ' </style:style>' + LE +
|
||||
|
||||
// ch21: style for 8th series (bar series, here)
|
||||
ind + ' <style:style style:name="ch21" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:style style:name="ch2100" style:family="chart" style:data-style-name="N0">' + LE +
|
||||
ind + ' <style:chart-properties chart:link-data-style-to-source="true"/>' + LE +
|
||||
ind + ' <style:graphic-properties draw:stroke="none" draw:fill-color="#aecf00" dr3d:edge-rounding="5%"/>' + LE +
|
||||
ind + ' <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>' + LE +
|
||||
@ -7574,7 +7765,7 @@ begin
|
||||
if IsSubTitle then
|
||||
begin
|
||||
elementName := 'subtitle';
|
||||
titleStyleID := 3;
|
||||
titleStyleID := 300;
|
||||
cap := AChart.SubTitle.Caption;
|
||||
end else
|
||||
begin
|
||||
|
Reference in New Issue
Block a user