fpspreadsheet: Improved x axis in StockSeries (date labels stills missing)

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@9072 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2023-12-06 00:06:02 +00:00
parent 2af4b6d034
commit a203cac202

View File

@ -53,6 +53,7 @@ type
FTitleCol, FTitleRow: Cardinal; FTitleCol, FTitleRow: Cardinal;
FTitleSheetName: String; FTitleSheetName: String;
FCyclicX: Boolean; FCyclicX: Boolean;
FIntegerX: Boolean;
FDataPointColors: array of TsColor; FDataPointColors: array of TsColor;
function GetRange(AIndex: TsXYLRange): String; function GetRange(AIndex: TsXYLRange): String;
function GetTitle: String; function GetTitle: String;
@ -95,6 +96,7 @@ type
property WorkbookSource: TsWorkbookSource read FWorkbookSource write SetWorkbookSource; property WorkbookSource: TsWorkbookSource read FWorkbookSource write SetWorkbookSource;
property ColorRange: String index rngColor read GetRange write SetRange; property ColorRange: String index rngColor read GetRange write SetRange;
property CyclicX: Boolean read FCyclicX write FCyclicX default false; property CyclicX: Boolean read FCyclicX write FCyclicX default false;
property IntegerX: Boolean read FIntegerX write FIntegerX default false;
property LabelRange: String index rngLabel read GetRange write SetRange; property LabelRange: String index rngLabel read GetRange write SetRange;
property XRange: String index rngX read GetRange write SetRange; property XRange: String index rngX read GetRange write SetRange;
property YRange: String index rngY read GetRange write SetRange; property YRange: String index rngY read GetRange write SetRange;
@ -469,7 +471,8 @@ begin
if FRanges[rngX, i] <> nil then if FRanges[rngX, i] <> nil then
begin begin
GetXYItem(rngX, i, AIndex, value, tmpLabel); GetXYItem(rngX, i, AIndex, value, tmpLabel);
FCurItem.SetX(i, value); if FIntegerX then
value := trunc(value);
end else end else
if FCyclicX then if FCyclicX then
value := AIndex / FPointsNumber * TWO_PI value := AIndex / FPointsNumber * TWO_PI
@ -1099,6 +1102,8 @@ begin
begin begin
Result := TOpenHighLowCloseSeries.Create(FChart); Result := TOpenHighLowCloseSeries.Create(FChart);
src.YCount := 4; src.YCount := 4;
src.IntegerX := true;
src.SetXRange(0, ASeries.Chart.XAxis.CategoryRange);
src.SetYRange(0, TsStockSeries(ASeries).LowRange); // 0=Low src.SetYRange(0, TsStockSeries(ASeries).LowRange); // 0=Low
src.SetYRange(1, TsStockSeries(ASeries).OpenRange); // 1=Open src.SetYRange(1, TsStockSeries(ASeries).OpenRange); // 1=Open
src.SetYRange(2, TsStockSeries(ASeries).CloseRange); // 2=Close (= Y) src.SetYRange(2, TsStockSeries(ASeries).CloseRange); // 2=Close (= Y)
@ -1108,12 +1113,17 @@ begin
exit(nil); exit(nil);
end; end;
if not ASeries.LabelRange.IsEmpty then // Get x and y ranges (except for OHLC which already has been handled)
src.SetLabelRange(ASeries.LabelRange); if not (Result is TOpenHighLowCloseSeries) then
begin
if not ASeries.XRange.IsEmpty then if not ASeries.XRange.IsEmpty then
src.SetXRange(0, ASeries.XRange); src.SetXRange(0, ASeries.XRange);
if not ASeries.YRange.IsEmpty and not (Result is TOpenHighLowCloseSeries) then if not ASeries.YRange.IsEmpty then
src.SetYRange(0, ASeries.YRange); src.SetYRange(0, ASeries.YRange);
end;
if not ASeries.LabelRange.IsEmpty then
src.SetLabelRange(ASeries.LabelRange);
if not ASeries.FillColorRange.IsEmpty then if not ASeries.FillColorRange.IsEmpty then
src.SetColorRange(ASeries.FillColorRange); src.SetColorRange(ASeries.FillColorRange);
src.SetTitleAddr(ASeries.TitleAddr); src.SetTitleAddr(ASeries.TitleAddr);