如何获得RichEdit中指定行号的位置? 有RichEdit中用FindText会返回所搜索字串在文本中的位置,如果只知道RichEdit中某一行的行号,如何通过行号算出在文本中的位置号? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 RichEdit1.FindText(RichEdit1.Lines.Strings[行号],......); liyinwei(月夜彩虹)你好,具体情况是这样的:我自己用POS写的一个向上查找功能,找到关键字后想能够选中并设置焦点。现在的情况是找到了关键字所在行,但不知道要如何才能选中键字并设置焦点激活。如果有其它实现向上查找的方法也行(用POS效率太低),但不能使用FindDialog窗体。 1.用Pos是比较慢,如果文本比较长或者需要“往上”查找,就不应该用Pos或PosEx之类的函数,建议楼主用FastStrings单元,它是用汇编写的,可以在大文本内快速定位字符串,而且支持“往上”查找,往上查找用FastPosBack,往下查找用FastPos。FastStrings可以在网上找到它的最新版本,那可是很多程序员的心血结晶!2.关于RichEdit内部定位光标的问题。用第一条的方法获得需要查找的字符串的位置后,就设置SelStart和SelLength,这不多说楼主也会,然后用RichEdit.Perform(EM_SCROLLCARET, 0, 0);直接定位滚动条滚动到被选择的字符串处。 i:=你的行号;RichEdit1.SelStart:=SendMessage(RichEdit1.Handle, EM_LINEINDEX, i, 0);RichEdit1.SelStart:=RichEdit1.SelStart+pos('关键字',RichEdit1.Lines.Strings{i]);RichEdit1.SelLength:=2;RichEdit1.SetFocus; 随手写的,未测试,可能略有出入,但肯定可以找到或者需要改成RichEdit1.SelStart:=RichEdit1.SelStart+pos('关键字',RichEdit1.Lines.Strings{i])-length(你的关键字);RichEdit1.SelLength:=length(你的关键字);自己试试吧 DELPHI2007 IDE最大化时不能覆盖整个屏幕 关于数据比较的问题 100分求 Delphi2005居然找不到system.io这个命名空间! MAPOBJECT的问题 seek函数是用来干什么的? 如何动态加入控件 《实战电子商务》篇 关于使用delphi添加版本号的问题 做演示软件通常都用什么工具,哪里有下载? 代理服务器的问题(请教高手) DELPHI 2006怎么没有报表控件? 字符串的输出问题,很急,请各位快快帮忙!
你好,具体情况是这样的:我自己用POS写的一个向上查找功能,找到关键字后想能够选中并设置焦点。现在的情况是找到了关键字所在行,但不知道要如何才能选中键字并设置焦点激活。如果有其它实现向上查找的方法也行(用POS效率太低),但不能使用FindDialog窗体。
2.关于RichEdit内部定位光标的问题。
用第一条的方法获得需要查找的字符串的位置后,就设置SelStart和SelLength,这不多说楼主也会,然后用
RichEdit.Perform(EM_SCROLLCARET, 0, 0);
直接定位滚动条滚动到被选择的字符串处。
RichEdit1.SelStart:=SendMessage(RichEdit1.Handle, EM_LINEINDEX, i, 0);
RichEdit1.SelStart:=RichEdit1.SelStart+pos('关键字',RichEdit1.Lines.Strings{i]);
RichEdit1.SelLength:=2;
RichEdit1.SetFocus;
或者需要改成
RichEdit1.SelStart:=RichEdit1.SelStart+pos('关键字',RichEdit1.Lines.Strings{i])-length(你的关键字);
RichEdit1.SelLength:=length(你的关键字);
自己试试吧