永发信息网

那位高手解释一下下面关于查找框命令的代码,最好解释下这种格式的原型,我很模糊———delphi天使

答案:1  悬赏:30  手机版
解决时间 2021-01-03 13:09
  • 提问者网友:黑米和小志
  • 2021-01-03 08:28
//FindDialog1对象的OnFind事件处理程序
procedure TForm1.FindDialog1Find(Sender: TObject);
var
FoundPos,InitPos:integer;
begin
InitPos:=Memo1.SelStart+Memo1.SelLength {从这一行开始解,每个变量最好说明一下}
FoundPos:=Pos(FindDialog1.FindText,Copy(Memo1.Text,InitPos+1,Length(Memo1.Text)-InitPos));//这一行的格式看得很费劲,不明白,详解一下

if FoundPos>0 then
begin
Memo1.SetFocus;
Memo1.SelStart:=InitPos+FoundPos-1;{这行的原理说明一下InitPos+FoundPos-1,为什么减1}
Memo1.SelLength:=Length(FindDialog1.FindText);
end
最佳答案
  • 五星知识达人网友:由着我着迷
  • 2021-01-07 04:22
1. InitPos:=Memo1.SelStart+Memo1.SelLength

Memo1.SelStart 是memo里选中的文字的开始位置
Memo1.SelLength 是memo里选中的文字的长度
两个加起来就是 选中文字的 结束位置

2. FoundPos:=Pos(FindDialog1.FindText,Copy(Memo1.Text,InitPos+1,Length(Memo1.Text)-InitPos));

InitPos+1 就是选中的文本之后的文本的起始位置

Length(Memo1.Text)-InitPos memo整个文本的长度 - 选中文本的结束位置
也就是 选中的文本之后 所有的文字的长度

那么copy函数整个的返回值就是 选中文本之后的 所有文本

所以 整个函数的意思就是 查找 查找对话框中的文本 在当前选择的文本之后的文本中的位置

比如 memo1.text 为 “abcdefg” 当前选择的文本是“b” 要查找的是“f”
FoundPos 的结果就是 4

3.Memo1.SelStart:=InitPos+FoundPos-1;
将查找到的文本选定


关于delphi:
我个人认为编程语言和开发工具仅仅是工具而已,最重要的是你的编程思想的继承,工具无所谓强大,他只是简化了你的某些操作而已
对Delphi而言,它的方便之处在于快速的界面可视化设计和开源的代码,如果需要你可以很方便地继承它给你提供的VCL库为自己所用,另外就是他方便的数据库开发,因为它为你封装了数据库操作灵活方便的ADO和BDE控件,熟悉一个工具,要熟悉它的操作,快捷键,另外就是它给你提供的别的工具所没有提供的东西
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯