我想为FindDialog的OnFind找文本,怎么写?

解决方案 »

  1.   

    书上这样写的,但运行结果不对:(
    procedure TForm1.FindDialog1Find(Sender: TObject);
    var
      FoundPos, InitPos: Integer;
    begin
      InitPos := Memo1.SelStart + Memo1.SelLength;
      FoundPos := Pos (FindDialog1.FindText,
        Copy (Memo1.Text, InitPos + 1,
          Length (Memo1.Text) - InitPos));
      if FoundPos > 0 then
      begin    Memo1.SetFocus;
        Memo1.SelStart := InitPos + FoundPos - 1;
        Memo1.SelLength := Length(FindDialog1.FindText);
      end
      else
      begin
        MessageDlg ('没找到。', mtInformation, [mbOK], 0);
      end;
    end;
      

  2.   

    从以前写的一个程序中复制来的,只是不能向上查找
    procedure TForm1.FindDialog1Find(Sender: TObject);
    var Found,StartPos,ToEnd:integer;
        Options:TSearchTypes;
    begin
       if frMatchCase in FindDialog1.Options then
           Options:=[stMatchCase];
       if frWholeWord in FindDialog1.Options then
           Options:=Options+[stWholeWord];
       with RichEdit1 do
        begin
          StartPos:=SelStart+SelLength;
          ToEnd:=Length(Text)-StartPos;
          Found:=FindText(FindDialog1.FindText,StartPos,ToEnd,Options);
        if (Found<>-1) then
          begin
            SetFocus;
            SelStart:=Found;
            SelLength:=Length(FindDialog1.FindText);
          end
          else
           SelStart:=Length(Text);
           PerForm(EM_SCROLLCARET,0,0);
        end;
    end;