program demo_search;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  SysUtils, Classes, TypInfo,
  fpsTypes, fpSpreadsheet, fpsSearch, fpsUtils, laz_fpspreadsheet;

var
  workbook: TsWorkbook;
  worksheet: TsWorksheet;
  s: String;
  searchParams: TsSearchParams;
  RowFound, ColFound: Cardinal;

begin
  workbook := TsWorkbook.Create;
  try
    worksheet := workbook.AddWorksheet('Test');

    worksheet.WriteNumber(0, 0, 10);        // A1
    worksheet.WriteNumber(1, 0, 2);         // A2
    worksheet.WriteNumber(2, 0, 5);         // A3  <---
    worksheet.WriteNumber(3, 0, 1);         // A4
    worksheet.WriteNumber(4, 0, 5);         // A5  <---
    worksheet.WriteNumber(5, 0, 3);         // A6
    worksheet.WriteNumber(0, 1, 5);         // B1  <---

    worksheet.WriteComment(0, 0, '5');
    worksheet.WriteComment(1, 0, '2');

    searchParams := InitSearchParams('5', [soEntireDocument]);

    // Create search engine and execute search
    with TsSearchEngine.Create(workbook) do begin
      if FindFirst(searchParams, worksheet, RowFound, ColFound) then begin
        WriteLn('First "', searchparams.SearchText, '" found in cell ', GetCellString(RowFound, ColFound));
        while FindNext(searchParams, worksheet, RowFound, ColFound) do
          WriteLn('Next "', searchParams.SearchText, '" found in cell ', GetCellString(RowFound, ColFound));
      end;
      Free;
    end;

    // Now search in comments
    Include(searchparams.Options, soSearchInComment);
    with TsSearchEngine.Create(workbook) do begin
      if FindFirst(searchParams, worksheet, RowFound, ColFound) then begin
        WriteLn('First "', searchparams.SearchText, '" found in comment of cell ', GetCellString(RowFound, ColFound));
        while FindNext(searchParams, worksheet, RowFound, ColFound) do
          WriteLn('Next "', searchParams.SearchText, '" found in comment of cell ', GetCellString(RowFound, ColFound));
      end;
      Free;
    end;

    ReadLn;

  finally
    workbook.Free;
  end;
end.