2009-09-28 82 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) ; 

再見。