Delphi知识中心
www.delphi.ee
提供Delphi技术知识
与Delphi程序员共同进步


在线服务QQ:99923144 随时恭候您的光临
首页 基础知识 WIN系统 组件使用 组件开发 数据库 ACTIVEX 多媒体技术 网络技术 关于
文章类别:组件使用    你尚未登陆,会员功能无法使用,请从 网站首页 登陆。
  MEMO实现跳到指定的行显示  
 
加入MEMO中有很多文字,并且也显示了垂直滚动条,如何才能实现跳到指定的行显示呢?

用 Memo1.Perform(EM_LINESCROLL, 0, 0). 方法可以向下跳转,但是如果还想向上跳转则不行了,请问这个问题怎么解决呢?或者还有其他更为巧妙的方法呢?谢谢各位了。

SendMessage(Memo1.Handle,WM_KEYDOWN,VK_NEXT,0). //向下

SendMessage(Memo1.Handle,WM_KEYDOWN,VK_PRIOR,0). //向上这个没有跳到指定的行啊~

只是似乎向下或向上翻页了,但是我希望是跳转到指定的行,怎么样才能做到呢?

可以利用Memo的SelStart.
向上

SendMessage(Memo1.Handle,WM_VSCROLL,SB_PAGEUP,0)
向下 

SendMessage(Memo1.Handle,WM_VSCROLL,SB_PAGEDOWN,0)

SelStart很脆弱,有时候更本起不了作用。

向上 SendMessage(Memo1.Handle,WM_VSCROLL,SB_PAGEUP,0)

向下  SendMessage(Memo1.Handle,WM_VSCROLL,SB_PAGEDOWN,0)

还是向上翻页和向下翻页,,,不能跳转到指定的行。

不过还是感谢楼上各位解答~ 问题还是没有得到解决。

with memo1 do

SelStart:=Perform(EM_LINEINDEX,要跳到的行-1,0).

memo1.SetFocus.

end..


采用:SendMessage(Memo1.Handle,EM_LINESCROLL,0,Memo1.Lines.Count);

让MEMO显示指定行。

示例代码:
DataMemo.SelStart:=0;
DataMemo.SelLength:=1;
//BL:=DataMemo.Perform(EM_LINESCROLL, Index, 0);
P:=SendMessage(DataMemo.Handle,EM_LINESCROLL,0,Index);

 

在线服务QQ:99923144 Delphi程序员QQ群(139442)
Delphi知识中心 www.delphi.ee 最专业的Delphi技术资料网站