You've already forked lazarus-ccr
fpspreadsheet: Fix calculation of cells destroying number formats.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3274 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -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;
|
||||
|
@ -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);
|
||||
|
Reference in New Issue
Block a user