先用一个变量记录上一次查找到的位置,如FPos,再用变量保存查找的文本的长度如FLength;
用变量FFindText保存要查找的文本
procedure TForm1.FindDialog1Find(Sender: TObject);
begin
  FPos := Pos(FindDialog1.FindText, RichEdit1.Lines.Text);
  if FPos <> 0 then
  begin
    FPos := FPos - 1;
    FLength := Length(FindDialog1.FindText);
    FFindText := FindDialog1.FindText;
    RichEdit1.SelStart := FPos;
    RichEdit1.SelLength := FLength;
  end;
end;
  
procedure TForm1.btnFindNextClick(Sender: TObject);
var
  iPos: integer;
begin
  iPos := Pos(FFindText, copy(RichEdit1.Lines.Text, FPos + FLength,
              Length(RichEdit1.Lines.Text)));
  if iPos <> 0 then
  begin
    RichEdit1.SelStart := FPos + FLength + iPos - 1;
    RichEdit1.SelLength := FLength;
    FPos := RichEdit1.SelStart;
  end;
end;