只為不段前行 发表于 2015-3-27 11:03:09

求助一个delphi中Memo的查找代码问题

procedure TForm1.Find1Click(Sender: TObject);
begin
FindDialog1.FindText:= Memo1.SelText;   //   执行查抄
FindDialog1.Execute;
end;

procedure TForm1.FindDialog1Find(Sender: TObject);
var
i, j, PosReturn, SkipChars: Integer;
begin
For i:= 0 to Memo1.Lines.Count do      //行数
begin
    PosReturn:= Pos(FindDialog1.FindText, Memo1.Lines);
    If PosReturn <> 0 then
    begin
      Skipchars:= 0;
      For j:= 0 to i-1 do
      Skipchars:= Skipchars + Length(Memo1.Lines);
      SkipChars:= SkipChars + (i*2);
      SkipChars:= SkipChars + PosReturn - 1;

      Memo1.SetFocus;
      Memo1.SelStart:= SkipChars;
      Memo1.SelLength:= Length(FindDialog1.FindText);
      Break;
    end;
end;
end;
能帮我解释下

      Skipchars:= 0;
      For j:= 0 to i-1 do
      Skipchars:= Skipchars + Length(Memo1.Lines);
      SkipChars:= SkipChars + (i*2);
      SkipChars:= SkipChars + PosReturn - 1;

      Memo1.SetFocus;
      Memo1.SelStart:= SkipChars;
      Memo1.SelLength:= Length(FindDialog1.FindText);
这部分代码具体是啥意思呀 没看懂{:5_100:}

南方的人 发表于 2015-3-28 13:25:00

我以前也没看懂,现在我帮你理解下整个函数。
procedure TForm1.Find1Click(Sender: TObject);
begin
FindDialog1.FindText:= Memo1.SelText;   //   执行查抄
FindDialog1.Execute;
end;

procedure TForm1.FindDialog1Find(Sender: TObject);
var
i, j, PosReturn, SkipChars: Integer;
begin
For i:= 0 to Memo1.Lines.Count do      //行数
begin
    PosReturn:= Pos(FindDialog1.FindText, Memo1.Lines);//寻找你输入的关键字从第0行开始。
    If PosReturn <> 0 then   //如果不为空,那么就是那行就有你要找的‘文字’
    begin
      Skipchars:= 0;
      For j:= 0 to i-1 do   //当i=o时候,代表搜索第一行就有你的关键字,此时就不用循环了。
      Skipchars:= Skipchars + Length(Memo1.Lines);//加上第j行所有的字符数      SkipChars:= SkipChars + (i*2);//加上每行末尾的换行字符#13#8,如果我没想错的话。
      SkipChars:= SkipChars + PosReturn - 1;// 加上你所搜索的关键字在那行的位置。

      Memo1.SetFocus;// 这个不知道,应该就是锁定当前程序(专业名词不会)
      Memo1.SelStart:= SkipChars; //选择上面所算出的整数。
      Memo1.SelLength:= Length(FindDialog1.FindText);//所选择的长度。
      Break;
    end;
end;
end;

南方的人 发表于 2015-3-28 13:33:34

我问的时候的贴子
页: [1]
查看完整版本: 求助一个delphi中Memo的查找代码问题