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个参数所表达的作用另外找个师傅带带我啊  我的分快用完了 以后有问题怎么办啊  不用您教  我自学的

解决方案 »

  1.   

    建议多看帮助文档(虽然都是英文的),或者多上Google,那样学得更快,实在找不到满意的答案或者无法完全理解再上论坛。毕竟,论坛里无法保证可以实时解答。SelLength:
    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;