Files
lazarus-ccr/components/fpspreadsheet/examples/other/searching/demo_search.pas
wp_xxyyzz dba75889aa fpspreadsheet: Clean up searching routines.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8080 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2021-08-26 13:19:10 +00:00

76 lines
2.3 KiB
ObjectPascal

program demo_search;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
SysUtils, Classes, TypInfo,
fpsTypes, fpSpreadsheet, fpsSearch, fpsUtils;
var
workbook: TsWorkbook;
worksheet: TsWorksheet;
searchParams: TsSearchParams;
rowFound, colFound: Cardinal;
worksheetFound: TsWorksheet;
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, worksheetFound, rowFound, colFound) then begin
WriteLn('First "', searchparams.SearchText, '" found in cell ',
GetCellString(rowFound, colFound), ' of worksheet ', worksheetFound.Name);
while FindNext(searchParams, worksheetFound, rowFound, colFound) do
WriteLn('Next "', searchParams.SearchText, '" found in cell ',
GetCellString(rowFound, colFound), ' of worksheet ', worksheetFound.Name);
end;
Free;
end;
// Now search in comments
Include(searchparams.Options, soSearchInComment);
with TsSearchEngine.Create(workbook) do begin
if FindFirst(searchParams, worksheetFound, rowFound, colFound) then begin
WriteLn('First "', searchparams.SearchText, '" found in comment of cell ',
GetCellString(rowFound, colFound), ' of worksheet ', worksheetFound.Name);
while FindNext(searchParams, worksheetFound, rowFound, colFound) do
WriteLn('Next "', searchParams.SearchText, '" found in comment of cell ',
GetCellString(rowFound, colFound), ' of worksheet ', worksheetFound.Name);
end;
Free;
end;
finally
workbook.Free;
end;
if ParamCount = 0 then
begin
{$IFDEF MSWINDOWS}
WriteLn;
WriteLn('Press [ENTER] to quit...');
ReadLn;
{$ENDIF}
end;
end.