You've already forked lazarus-ccr
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:
@ -197,6 +197,8 @@ type
|
||||
function ReadWordwrap(ACell: PCell): boolean;
|
||||
function ReadBiDiMode(ACell: PCell): TsBiDiMode;
|
||||
|
||||
function IsEmpty: Boolean;
|
||||
|
||||
{ Writing of values }
|
||||
function WriteBlank(ARow, ACol: Cardinal): PCell; overload;
|
||||
procedure WriteBlank(ACell: PCell); overload;
|
||||
@ -761,6 +763,7 @@ type
|
||||
function GetWorksheetCount: Integer;
|
||||
function GetWorksheetIndex(AWorksheet: TsWorksheet): Integer;
|
||||
procedure RemoveAllWorksheets;
|
||||
procedure RemoveAllEmptyWorksheets;
|
||||
procedure RemoveWorksheet(AWorksheet: TsWorksheet);
|
||||
procedure SelectWorksheet(AWorksheet: TsWorksheet);
|
||||
function ValidWorksheetName(var AName: String;
|
||||
@ -3373,6 +3376,25 @@ begin
|
||||
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 }
|
||||
|
||||
{@@ ----------------------------------------------------------------------------
|
||||
@ -8424,6 +8446,22 @@ begin
|
||||
FWorksheets.ForEachCall(RemoveWorksheetsCallback, nil);
|
||||
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
|
||||
list, generates an event OnRemoveWorksheet, and releases all memory.
|
||||
|
Reference in New Issue
Block a user