diff --git a/components/fpspreadsheet/fpspreadsheet.pas b/components/fpspreadsheet/fpspreadsheet.pas index c6f2f3682..30b2d4c8e 100755 --- a/components/fpspreadsheet/fpspreadsheet.pas +++ b/components/fpspreadsheet/fpspreadsheet.pas @@ -400,6 +400,7 @@ type procedure CopyValue(AFromCell, AToCell: PCell); overload; procedure CopyValue(AValueCell: PCell; AToRow, AToCol: Cardinal); overload; + procedure Clear; procedure DeleteCell(ACell: PCell); procedure EraseCell(ACell: PCell); @@ -1855,6 +1856,20 @@ begin CopyValue(AValueCell, GetCell(AToRow, AToCol)); end; +procedure TsWorksheet.Clear; +begin + FCells.Clear; + FComments.Clear; + FHyperlinks.Clear; + FMergedCells.Clear; + + RemoveAllImages; + RemoveAllRows; + RemoveAllCols; + + ChangedCell(0, 0); +end; + {@@ ---------------------------------------------------------------------------- Deletes a specified cell. If the cell belongs to a merged block its content and formatting is erased. Otherwise the cell is destroyed and its memory is diff --git a/components/fpspreadsheet/fpspreadsheetgrid.pas b/components/fpspreadsheet/fpspreadsheetgrid.pas index 95e3a853e..ec4798b42 100644 --- a/components/fpspreadsheet/fpspreadsheetgrid.pas +++ b/components/fpspreadsheet/fpspreadsheetgrid.pas @@ -274,6 +274,7 @@ type procedure BeginUpdate; function CellRect(ACol1, ARow1, ACol2, ARow2: Integer): TRect; overload; + procedure Clear; procedure DefaultDrawCell(ACol, ARow: Integer; var ARect: TRect; AState: TGridDrawState); override; procedure DeleteCol(AGridCol: Integer); reintroduce; procedure DeleteRow(AGridRow: Integer); reintroduce; @@ -1373,6 +1374,14 @@ begin end; end; +{@@ ---------------------------------------------------------------------------- + Clears the grid contents +-------------------------------------------------------------------------------} +procedure TsCustomWorksheetGrid.Clear; +begin + if (Worksheet <> nil) then Worksheet.Clear; +end; + {@@ ---------------------------------------------------------------------------- Converts a spreadsheet font to a font used for painting (TCanvas.Font). @@ -4322,11 +4331,11 @@ begin if FLockSetup > 0 then exit; - + { if not HandleAllocated then //Avoid crash when accessing the canvas, e.g. in GetDefaultHeaderColWidth exit; - + } if (Worksheet = nil) or (Worksheet.GetCellCount = 0) then begin FixedCols := FFrozenCols + FHeaderCount; FixedRows := FFrozenRows + FHeaderCount;