with Memo do begin if SelLength<>0 then StartPos:=SelStart+SelLength else StartPos:=0; ToEnd:=length(Text)-StartPos; FoundAt:=FindText(FindDialog1.FindText,StartPos,ToEnd,[stMatchCase]); if FoundAt<>-1 then begin SetFocus; SelStart:=FoundAt; SelLength:=length(FindDialog1.FindText); end; end;
你可以将找到的字符及位置记录下来(放在数组或TList中等).Tmemo本身不提供备注的功能
To:201fgq(七彩云南) 对不起我不知道Tmemo的本身不能FindText; 不过你可以这样: 把要TMemo的内容付置给RichEdit。让它去查,查到的光标在付回来。 procedure TForm1.Button1Click(Sender: TObject); begin FindDialog1.FindText:=Memo1.SelText; RichEdit1.Text:=Memo1.Text; FindDialog1.Execute; end;procedure TForm1.FindDialog1Find(Sender: TObject); var FoundAt:LongInt; StartPos,ToEnd:Integer; frMatchCaseTmp,frWholeWordTmp:TFindOption; begin with RichEdit1 do begin if SelLength<>0 then StartPos:=SelStart+SelLength else StartPos:=0; ToEnd:=length(Text)-StartPos; FoundAt:=FindText(FindDialog1.FindText,StartPos,ToEnd,[stMatchCase]); if FoundAt<>-1 then begin {SetFocus; SelStart:=FoundAt; SelLength:=length(FindDialog1.FindText);} //本来该付给Richedit的,付给Memo1也可以得到查找的效果。 Memo1.SetFocus; Memo1.SelStart:=FoundAt; Memo1.SelLength:=length(FindDialog1.FindText); end; end; end;:)
begin
if SelLength<>0 then StartPos:=SelStart+SelLength
else StartPos:=0;
ToEnd:=length(Text)-StartPos;
FoundAt:=FindText(FindDialog1.FindText,StartPos,ToEnd,[stMatchCase]);
if FoundAt<>-1 then
begin
SetFocus;
SelStart:=FoundAt;
SelLength:=length(FindDialog1.FindText);
end;
end;
对不起我不知道Tmemo的本身不能FindText;
不过你可以这样:
把要TMemo的内容付置给RichEdit。让它去查,查到的光标在付回来。
procedure TForm1.Button1Click(Sender: TObject);
begin
FindDialog1.FindText:=Memo1.SelText;
RichEdit1.Text:=Memo1.Text;
FindDialog1.Execute;
end;procedure TForm1.FindDialog1Find(Sender: TObject);
var FoundAt:LongInt;
StartPos,ToEnd:Integer;
frMatchCaseTmp,frWholeWordTmp:TFindOption;
begin
with RichEdit1 do
begin
if SelLength<>0 then StartPos:=SelStart+SelLength
else StartPos:=0;
ToEnd:=length(Text)-StartPos;
FoundAt:=FindText(FindDialog1.FindText,StartPos,ToEnd,[stMatchCase]);
if FoundAt<>-1 then
begin
{SetFocus;
SelStart:=FoundAt;
SelLength:=length(FindDialog1.FindText);} //本来该付给Richedit的,付给Memo1也可以得到查找的效果。
Memo1.SetFocus;
Memo1.SelStart:=FoundAt;
Memo1.SelLength:=length(FindDialog1.FindText);
end;
end;
end;:)