2009-09-28 211 views
1

我正在向TRichEdit中添加行如何关注刚刚添加的行?在Delphi中使用TRichEdit滚动问题

For Idx := 1 to 1000 do 
    RichEdit.Lines.add(IntToStr(Idx)); 

编辑

我正是在RichEdit显示的底线只是添加了什么和所有其他行向上滚动

+0

我认为“焦点”通常用于控件。你的意思是你想要选择刚刚添加的文本(将导致下一个操作粘贴),将插入点保持在最后添加的行上(这会导致粘贴一条很长的行)或者可能你的意思是你想滚动到富有的底部? – Argalatyr 2009-09-28 21:39:37

+0

另请参阅此答案:[滚动RichEdit时没有焦点](http://stackoverflow.com/a/9757314/576719)。 – 2012-03-18 10:17:32

回答

5

这应该工作,如果你只是想滚动到RichEdit中结束:

For Idx := 1 to 1000 do 
begin 
    RichEdit.Lines.add(IntToStr(Idx)); 
    RichEdit.SelStart := RichEdit.GetTextLen; 
    SendMessage(RichEdit.handle, EM_SCROLLCARET,0,0); 
end; 

如果这不是你想要的,请看到我的评论上方,澄清你的问题。

+0

谢谢 - 这个作品很好:) – 2009-09-28 21:57:25

3

你可以试试这个

选项1)当循环完成时设置光标

For Idx := 1 to 1000 do 
    RichEdit.Lines.add(IntToStr(Idx)); 

RichEdit.SetFocus; 
RichEdit.SelStart := RichEdit.Perform(EM_LINEINDEX, RichEdit.Lines.Count-1, 0) ; 

选项2)设置光标r while the loop is executed

For Idx := 1 to 1000 do 
Begin 
RichEdit.Lines.add(IntToStr(Idx)); 
RichEdit.SetFocus; 
End; 

RichEdit.SelStart := RichEdit.Perform(EM_LINEINDEX, RichEdit.Lines.Count-1, 0) ; 

再见。