From ebfabd1010eb3ef8fd9c3b6a8060b42dfa7778e4 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Mon, 23 Jun 2014 14:32:44 +0000 Subject: [PATCH] fpspreadsheet / spready demo: Formula edit line now shows unformatted number, like Excel and Calc do. A value edited in the formula edit line is now transferred to the worksheet (ignoring formulas so far). git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3226 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../examples/spready/mainform.lfm | 1 + .../examples/spready/mainform.pas | 24 ++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/components/fpspreadsheet/examples/spready/mainform.lfm b/components/fpspreadsheet/examples/spready/mainform.lfm index d24057e00..7de3bc111 100644 --- a/components/fpspreadsheet/examples/spready/mainform.lfm +++ b/components/fpspreadsheet/examples/spready/mainform.lfm @@ -402,6 +402,7 @@ object Form1: TForm1 Top = 2 Width = 755 Align = alClient + OnEditingDone = EdFormulaEditingDone TabOrder = 0 end object EdCellAddress: TEdit diff --git a/components/fpspreadsheet/examples/spready/mainform.pas b/components/fpspreadsheet/examples/spready/mainform.pas index 885e2d36a..8efabf2d3 100644 --- a/components/fpspreadsheet/examples/spready/mainform.pas +++ b/components/fpspreadsheet/examples/spready/mainform.pas @@ -250,6 +250,7 @@ type procedure CbShowGridLinesClick(Sender: TObject); procedure CbBackgroundColorGetColors(Sender: TCustomColorBox; Items: TStrings); procedure EdCellAddressEditingDone(Sender: TObject); + procedure EdFormulaEditingDone(Sender: TObject); procedure EdFrozenColsChange(Sender: TObject); procedure EdFrozenRowsChange(Sender: TObject); procedure FontComboBoxSelect(Sender: TObject); @@ -662,6 +663,15 @@ begin end; end; +procedure TForm1.EdFormulaEditingDone(Sender: TObject); +var + r, c: Cardinal; +begin + r := WorksheetGrid.GetWorksheetRow(WorksheetGrid.Row); + c := WorksheetGrid.GetWorksheetCol(WorksheetGrid.Col); + WorksheetGrid.Worksheet.WriteCellValueAsString(r, c, EdFormula.Text); +end; + procedure TForm1.EdFrozenColsChange(Sender: TObject); begin WorksheetGrid.FrozenCols := EdFrozenCols.Value; @@ -808,7 +818,19 @@ begin if s <> '' then EdFormula.Text := s else - EdFormula.Text := WorksheetGrid.Worksheet.ReadAsUTF8Text(cell); + case cell^.ContentType of + cctNumber: + EdFormula.Text := FloatToStr(cell^.NumberValue); + cctDateTime: + if cell^.DateTimeValue < 1.0 then + EdFormula.Text := FormatDateTime('tt', cell^.DateTimeValue) + else + EdFormula.Text := FormatDateTime('c', cell^.DateTimeValue); + cctUTF8String: + EdFormula.Text := cell^.UTF8StringValue; + else + EdFormula.Text := WorksheetGrid.Worksheet.ReadAsUTF8Text(cell); + end; end else EdFormula.Text := '';