procedure TForm1.FindDialog1Find(Sender: TObject);
var
foundpos,initpos:Integer;
begin
initpos:=richedit1.selstart + richedit1.sellength;//这句不明白1.
foundpos:=Pos(FindDialog1.findtext,Copy(richedit1.text,initpos+1,Length(richedit1.text)-initpos));//2
if foundpos > 0 then
begin richedit1.setfocus;//将焦点移到richedit中
richedit1.selstart:=initpos+foundpos-1;//3
richedit1.sellength:=Length(finddialog1.findtext);/4
end
else
messagedlg('没有找到要查找的文本',mtinformation,[mbok],0);
end;
1.richedit1.selstart是光标所在位置richedit1.sellength是文本长度
我不明白为什么要相加?比如说abcdefg此时richedit1.selstart=2光标在B后面richedit1.sellength是7文本的长度
2+7得到什么?2.Pos这个函数明白后面的copy函数明白 但是此函数中的参数不明白
上面有一部分通过百度搜索 能知道一些大体意思 还有很多地方不明白 还请各位大哥大姐积极帮助
3,4不明白 其实以上不明白的地方就是richedit1.selstart ,richedit1.sellength,foundpos,initpos这4个参数所表达的作用另外找个师傅带带我啊 我的分快用完了 以后有问题怎么办啊 不用您教 我自学的
var
foundpos,initpos:Integer;
begin
initpos:=richedit1.selstart + richedit1.sellength;//这句不明白1.
foundpos:=Pos(FindDialog1.findtext,Copy(richedit1.text,initpos+1,Length(richedit1.text)-initpos));//2
if foundpos > 0 then
begin richedit1.setfocus;//将焦点移到richedit中
richedit1.selstart:=initpos+foundpos-1;//3
richedit1.sellength:=Length(finddialog1.findtext);/4
end
else
messagedlg('没有找到要查找的文本',mtinformation,[mbok],0);
end;
1.richedit1.selstart是光标所在位置richedit1.sellength是文本长度
我不明白为什么要相加?比如说abcdefg此时richedit1.selstart=2光标在B后面richedit1.sellength是7文本的长度
2+7得到什么?2.Pos这个函数明白后面的copy函数明白 但是此函数中的参数不明白
上面有一部分通过百度搜索 能知道一些大体意思 还有很多地方不明白 还请各位大哥大姐积极帮助
3,4不明白 其实以上不明白的地方就是richedit1.selstart ,richedit1.sellength,foundpos,initpos这4个参数所表达的作用另外找个师傅带带我啊 我的分快用完了 以后有问题怎么办啊 不用您教 我自学的
Specifies the number of characters (bytes) that are selected
SelStart:
Specifies the position of the first selected character in the textprocedure TForm1.FindDialog1Find(Sender: TObject);
var
foundpos,initpos:Integer;
begin
initpos:=richedit1.selstart + richedit1.sellength;//这句不明白1.
//RichEdit1.SelStart:在RichEdit1中光标所处的位置,如有字符串'adfs',光标在f后面,
//则RichEdit1。SelStart := 3;
//后面SelLength表示选择的字符(文本)个数,
//因为你是要查找文本,所以通过相加返回下一个查找的起点位置
foundpos:=Pos(FindDialog1.findtext,Copy(richedit1.text,initpos+1,Length(richedit1.text)-initpos));//2
//Copy(),返回后续查找的范围,需要先排除前面已经查找过的范围,
//initpos+1后续查找的起始点
//Length(RichEdit1.Text) - initpos 返回后面文本的长度
//Pos就是从后面的文本中返回与FindDialog1指定的文本匹配的文本的起始位置
if foundpos > 0 then
begin richedit1.setfocus;//将焦点移到richedit中
richedit1.selstart:=initpos+foundpos-1;//3
richedit1.sellength:=Length(finddialog1.findtext);/4
//返回高亮选择的起点和需要选中的字符个数
end
else
messagedlg('没有找到要查找的文本',mtinformation,[mbok],0);
end;