From 56009b4a89f2b3c54682f7490dc84c6c1d3eaeff Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Mon, 19 Dec 2016 22:19:00 +0000 Subject: [PATCH] fpspreadsheet: Add workbook methods to navigate to previous, next and last worksheet. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5543 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../source/common/fpspreadsheet.pas | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/components/fpspreadsheet/source/common/fpspreadsheet.pas b/components/fpspreadsheet/source/common/fpspreadsheet.pas index ace38a245..b0170521b 100644 --- a/components/fpspreadsheet/source/common/fpspreadsheet.pas +++ b/components/fpspreadsheet/source/common/fpspreadsheet.pas @@ -742,6 +742,9 @@ type function CopyWorksheetFrom(AWorksheet: TsWorksheet; ReplaceDuplicateName: Boolean = false): TsWorksheet; function GetFirstWorksheet: TsWorksheet; + function GetLastWorksheet: TsWorksheet; + function GetNextWorksheet(AWorksheet: TsWorksheet): TsWorksheet; + function GetPreviousWorksheet(AWorksheet: TsWorksheet): TsWorksheet; function GetWorksheetByIndex(AIndex: Integer): TsWorksheet; function GetWorksheetByName(AName: String): TsWorksheet; function GetWorksheetCount: Integer; @@ -8172,6 +8175,72 @@ begin Result := TsWorksheet(FWorksheets.First); end; +{@@ ---------------------------------------------------------------------------- + Quick helper routine which returns the last worksheet + + @return A TsWorksheet instance if at least one is present. + nil otherwise. + + @see TsWorkbook.GetWorksheetByIndex + @see TsWorkbook.GetWorksheetByName + @see TsWorksheet +-------------------------------------------------------------------------------} +function TsWorkbook.GetLastWorksheet: TsWorksheet; +begin + Result := TsWorksheet(FWorksheets.Last); +end; + + +{@@ ---------------------------------------------------------------------------- + Returns the worksheet following the specified one. + + @return A TsWorksheet instance if the specified worksheet is not the last one + nil otherwise. + + @see TsWorkbook.GetFirstWorksheet + @see TsWorkbook.GetPreviousWorksheet + @see TsWorkbook.GetLastWorksheet + @see TsWorkbook.GetFirstWorksheet + @see TsWorkbook.GetWorksheetByIndex + @see TsWorkbook.GetWorksheetByName + @see TsWorksheet +-------------------------------------------------------------------------------} +function TsWorkbook.GetNextWorksheet(AWorksheet: TsWorksheet): TsWorksheet; +var + idx: Integer; +begin + idx := FWorksheets.Indexof(AWorksheet); + if idx < FWorksheets.Count-1 then + Result := TsWorksheet(FWorksheets.Items[idx + 1]) + else + Result := nil; +end; + +{@@ ---------------------------------------------------------------------------- + Returns the worksheet preceding the specified one. + + @return A TsWorksheet instance if the specified worksheet is not + the first one, nil otherwise. + + @see TsWorkbook.GetFirstWorksheet + @see TsWorkbook.GetNextWorksheet + @see TsWorkbook.GetLastWorksheet + @see TsWorkbook.GetFirstWorksheet + @see TsWorkbook.GetWorksheetByIndex + @see TsWorkbook.GetWorksheetByName + @see TsWorksheet +-------------------------------------------------------------------------------} +function TsWorkbook.GetPreviousWorksheet(AWorksheet: TsWorksheet): TsWorksheet; +var + idx: Integer; +begin + idx := FWorksheets.IndexOf(AWorksheet); + if idx > 0 then + Result := TsWorksheet(FWorksheets.Items[idx - 1]) + else + Result := nil; +end; + {@@ ---------------------------------------------------------------------------- Gets the worksheet with a given index