怎样在memo中查找指定字符串?(100分)

  • 主题发起人 主题发起人 hzzkf
  • 开始时间 开始时间
H

hzzkf

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在MEMO中整篇查找指定字符串,比如查找'abc'(只要找到第一个),如何进行?
找到后,再然后根据它的列数,在它的后一行加入一些字符,但要比'abc'的位置往后靠一
点,靠一点的空格可以自己定义,如何进行?
 
pos('abc',memo.lines.text)
 
procedure FindStrInMemo(Memo : TMemo; const FindStr : String);
var
i : Integer;
begin
for i:= 0 to Memo.Lines.Count -1 do
begin
Memo.SetFocus;
Memo.SelStart := Pos(FindStr, Memo.Lines) - 1;
Memo.SelLength := Length(FindStr);
Break;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
FindStrInMemo(Memo1, 'aa');//aa为你要查找的文字
end;
 
你可以先用pos求出第一个'abc'的位置p1,然后找出前一个#13#10,p2,后一个#13#10,p3
则p2+2为当前行的首位置,p3+2为下一行的首位置。
用selstart可以设置当前输入位置。
如果你的memo是自动换行的,而且你想在逻辑上的下一行的相应位置插入新的字符你可以
向memo发送模拟按键的消息(一个向下的方向键和几个你指定数目的向右的方向键。)
你还可以selstart:=p1;然后用API函数getcaretpos得到当前的光标位置,然后计算一下行
高,然后用setcaretpos将光标定位于下一行。
总之方法很多的,你自己试一试然后作出选择!
 
agree with hhzh426
 
接受答案了.
 
后退
顶部