来自带的Demo里Viewer

image

 

image

procedure TFormMain.SpeedButtonSearchClick(Sender: TObject);
var FoundIndex: Integer;
begin
  if EditSearch.Text <> '' then
  begin
    Cancel := False;
    ProgressBar.Max := Pdf.PageCount - PdfView.PageNumber;
    ProgressBar.Position := 0;
    PanelButtons.Visible := False;
    PanelCancel.Visible := True;

    try
      Pdf.PageNumber := PdfView.PageNumber;
      if SearchStart = -1 then
        FoundIndex := Pdf.FindFirst(EditSearch.Text, [])
      else
        FoundIndex := Pdf.FindNext;

      SearchStart := -1;
      SearchEnd := -1;

      while (FoundIndex = -1) and (Pdf.PageNumber < Pdf.PageCount) do
      begin
        ProgressBar.Position := ProgressBar.Position + 1;
        Application.ProcessMessages;
        if Cancel then
          Break;
          
        Pdf.PageNumber := Pdf.PageNumber + 1;
        FoundIndex := Pdf.FindFirst(EditSearch.Text, [])
      end;

      if FoundIndex <> -1 then
      begin
        PdfView.PageNumber := Pdf.PageNumber;
        SearchStart := FoundIndex;
        SearchEnd := FoundIndex + Length(EditSearch.Text) - 1;
        PdfView.Invalidate; // repaint
      end
      else
      begin
        PdfView.Invalidate; // repaint
        if not Cancel then
          ShowMessage(EditSearch.Text+  ' 没找到');
      end;
    finally
      PanelCancel.Visible := False;
      PanelButtons.Visible := True;
    end;
  end
end;