procedure TForm2.FindDialog1Find(Sender: TObject);
var
 FindAt:longint;
 toEnd,Start:integer;
begin
with RichEdit1 do
 begin
  if SelLength<>0 then
   Start:=SelStart+SelLength
  else
   Start:=0;
  toEnd:=length(Text)-Start;
  FindAt:=FindText(FindDialog1.FindText,Start,toEnd,[stMatchCase,stWholeWord]);
  //用showmessage测试FindAt结果总是-1,但上面的式子有什么地方出错,请大虾指示!
  if FindAt<>-1 then
   begin
    SetFocus;
    SelStart:=FindAt;
    SelLength:=length(FindDialog1.FindText);
   end
  else
   application.MessageBox('查找字符','查找字符串',MB_OK);
 end;

解决方案 »

  1.   

    procedure TForm2.FindDialog1Find(Sender: TObject);
    var
     FindAt:longint;
     toEnd,Start:integer;
    begin
    with RichEdit1 do
     begin
      if SelLength<>0 then
       Start:=SelStart+SelLength
      else
       Start:=0;
      toEnd:=length(Text)-Start;
      FindAt:=FindText(FindDialog1.FindText,Start,toEnd,[]);//试试这样
      //用showmessage测试FindAt结果总是-1,但上面的式子有什么地方出错,请大虾指示!
      if FindAt<>-1 then
       begin
        SetFocus;
        SelStart:=FindAt;
        SelLength:=length(FindDialog1.FindText);
       end
      else
       application.MessageBox('查找字符','查找字符串',MB_OK);
     end;
      

  2.   

    findat:=findtext(finddialog1.findtext,start,toend);
    if find then  findat:=1;
    else findat:=0;