fpspreadsheet: Add TsWorksheet.IsEmpty and TsWorkbook.RemoveAllEmptyWorksheets.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5582 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2017-01-02 09:35:10 +00:00
parent 0bcf146bf0
commit 935c054138

View File

@ -197,6 +197,8 @@ type
function ReadWordwrap(ACell: PCell): boolean; function ReadWordwrap(ACell: PCell): boolean;
function ReadBiDiMode(ACell: PCell): TsBiDiMode; function ReadBiDiMode(ACell: PCell): TsBiDiMode;
function IsEmpty: Boolean;
{ Writing of values } { Writing of values }
function WriteBlank(ARow, ACol: Cardinal): PCell; overload; function WriteBlank(ARow, ACol: Cardinal): PCell; overload;
procedure WriteBlank(ACell: PCell); overload; procedure WriteBlank(ACell: PCell); overload;
@ -761,6 +763,7 @@ type
function GetWorksheetCount: Integer; function GetWorksheetCount: Integer;
function GetWorksheetIndex(AWorksheet: TsWorksheet): Integer; function GetWorksheetIndex(AWorksheet: TsWorksheet): Integer;
procedure RemoveAllWorksheets; procedure RemoveAllWorksheets;
procedure RemoveAllEmptyWorksheets;
procedure RemoveWorksheet(AWorksheet: TsWorksheet); procedure RemoveWorksheet(AWorksheet: TsWorksheet);
procedure SelectWorksheet(AWorksheet: TsWorksheet); procedure SelectWorksheet(AWorksheet: TsWorksheet);
function ValidWorksheetName(var AName: String; function ValidWorksheetName(var AName: String;
@ -3373,6 +3376,25 @@ begin
end; end;
{@@ ----------------------------------------------------------------------------
Returns true if the worksheet does not contain any cell, column or row records
-------------------------------------------------------------------------------}
function TsWorksheet.IsEmpty: Boolean;
var
cell: PCell;
begin
Result := false;
for cell in Cells do
if cell^.ContentType <> cctEmpty then
exit;
if (Rows.Count > 0) or (Cols.Count > 0) then
exit;
Result := true;
end;
{ Merged cells } { Merged cells }
{@@ ---------------------------------------------------------------------------- {@@ ----------------------------------------------------------------------------
@ -8424,6 +8446,22 @@ begin
FWorksheets.ForEachCall(RemoveWorksheetsCallback, nil); FWorksheets.ForEachCall(RemoveWorksheetsCallback, nil);
end; end;
{@@ ----------------------------------------------------------------------------
Removes all empty worksheets
-------------------------------------------------------------------------------}
procedure TsWorkbook.RemoveAllEmptyWorksheets;
var
sheet: TsWorksheet;
i: Integer;
begin
for i:= FWorksheets.Count-1 downto 0 do
begin
sheet := TsWorksheet(FWorksheets.Items[i]);
if sheet.IsEmpty then
RemoveWorksheet(sheet);
end;
end;
{@@ ---------------------------------------------------------------------------- {@@ ----------------------------------------------------------------------------
Removes the specified worksheet: Removes the sheet from the internal sheet Removes the specified worksheet: Removes the sheet from the internal sheet
list, generates an event OnRemoveWorksheet, and releases all memory. list, generates an event OnRemoveWorksheet, and releases all memory.