diff --git a/components/fpspreadsheet/examples/other/test_formula_func.pas b/components/fpspreadsheet/examples/other/test_formula_func.pas index 05f3a0e67..a02e7a6eb 100644 --- a/components/fpspreadsheet/examples/other/test_formula_func.pas +++ b/components/fpspreadsheet/examples/other/test_formula_func.pas @@ -52,10 +52,10 @@ begin if Args.PopNumberValues(NumArgs, false, data, Result) then // Call our FV function with the NumberValues of the arguments. Result := CreateNumber(FV( - data[0], // interest rate - data[1], // number of payments - data[2], // payment - data[3], // present value + data[0], // interest rate + data[1], // number of payments + data[2], // payment + data[3], // present value round(data[4]) // payment type )); end; diff --git a/components/fpspreadsheet/fpspreadsheet.pas b/components/fpspreadsheet/fpspreadsheet.pas index 206a5754b..98e0fda6e 100755 --- a/components/fpspreadsheet/fpspreadsheet.pas +++ b/components/fpspreadsheet/fpspreadsheet.pas @@ -556,10 +556,12 @@ type procedure WriteErrorValue(ACell: PCell; AValue: TsErrorValue); overload; procedure WriteFormula(ARow, ACol: Cardinal; AFormula: TsFormula); + procedure WriteNumber(ARow, ACol: Cardinal; ANumber: double); overload; + procedure WriteNumber(ACell: PCell; ANumber: Double); overload; procedure WriteNumber(ARow, ACol: Cardinal; ANumber: double; - AFormat: TsNumberFormat = nfGeneral; ADecimals: Byte = 2); overload; + AFormat: TsNumberFormat; ADecimals: Byte = 2); overload; procedure WriteNumber(ACell: PCell; ANumber: Double; - AFormat: TsNumberFormat = nfGeneral; ADecimals: Byte = 2); overload; + AFormat: TsNumberFormat; ADecimals: Byte = 2); overload; procedure WriteNumber(ARow, ACol: Cardinal; ANumber: double; AFormat: TsNumberFormat; AFormatString: String); overload; procedure WriteNumber(ACell: PCell; ANumber: Double; @@ -2415,6 +2417,34 @@ begin ChangedCell(ACell^.Row, ACell^.Col); end; +{@@ + Writes a floating-point number to a cell. Does not change number format. + + @param ARow Cell row index + @param ACol Cell column index + @param ANumber Number to be written +} +procedure TsWorksheet.WriteNumber(ARow, ACol: Cardinal; ANumber: double); +begin + WriteNumber(GetCell(ARow, ACol), ANumber); +end; + +{@@ + Writes a floating-point number to a cell. Does not change number format. + + @param ARow Cell row index + @param ACol Cell column index + @param ANumber Number to be written +} +procedure TsWorksheet.WriteNumber(ACell: PCell; ANumber: double); +begin + if ACell <> nil then begin + ACell^.ContentType := cctNumber; + ACell^.NumberValue := ANumber; + ChangedCell(ACell^.Row, ACell^.Col); + end; +end; + {@@ Writes a floating-point number to a cell @@ -2426,7 +2456,7 @@ end; @see TsNumberFormat } procedure TsWorksheet.WriteNumber(ARow, ACol: Cardinal; ANumber: double; - AFormat: TsNumberFormat = nfGeneral; ADecimals: Byte = 2); + AFormat: TsNumberFormat; ADecimals: Byte = 2); begin WriteNumber(GetCell(ARow, ACol), ANumber, AFormat, ADecimals); end; @@ -2441,7 +2471,7 @@ end; @see TsNumberFormat } procedure TsWorksheet.WriteNumber(ACell: PCell; ANumber: Double; - AFormat: TsNumberFormat = nfGeneral; ADecimals: Byte = 2); + AFormat: TsNumberFormat; ADecimals: Byte = 2); begin if IsDateTimeFormat(AFormat) or IsCurrencyFormat(AFormat) then raise Exception.Create(lpInvalidNumberFormat);