我有一個TMemo里面有文字,例如:
Text1
Hello World!
Sky
Text123
我使用一個簡單的函式來選擇第一次找到的文本
Memo1.SelStart := Pos(AnsiLowerCase('Text'), AnsiLowerCase(Memo1.Text)) - 1;
Memo1.SelLength := Length('Text');
Memo1.SetFocus;
我使用了AnsiLowerCase所以我可以在不需要正確大寫的情況下找到文本。
那么,如何選擇第二次出現在備忘錄中的“文本”?
uj5u.com熱心網友回復:
您可以使用
procedure SearchNext(AMemo : TMemo; const ATextToSearch : string; ACycle : Boolean = True);
var
Offset : Integer;
begin
//adjusting offset
Offset := AMemo.SelStart AMemo.SelLength 1;
if(Offset >= Length(AMemo.Text)) then
Offset := 1;
//searching
Offset := Pos(AnsiLowerCase(ATextToSearch), AnsiLowerCase(AMemo.Text), Offset);
if(Offset > 0) then
begin
//selecting found text
AMemo.SelStart := Offset - 1;
AMemo.SelLength := Length(ATextToSearch);
AMemo.SetFocus;
end else
begin
//recursion from the beginning
if(ACycle and (AMemo.SelStart AMemo.SelLength <> 0)) then
begin
AMemo.SelStart := 0;
SearchNext(AMemo, ATextToSearch, True);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SearchNext(Memo1, Edit1.Text);
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/350463.html
上一篇:無論實際值如何,條件始終評估為真
下一篇:為什么FileAge回傳意外值?
