如何自动滚动到RichEdit的末尾?

Dan*_*llo 8 delphi scroll richedit autoscroll

我以前从不需要使用TRichEdit,总是使用TMemo.

当我添加像TMemo这样的文本时,我希望RichEdit自动滚动到最后.了解添加一些数据后的样子:

在此输入图像描述

如您所见,滚动条保持在顶部,但我希望它在我添加文本时保持在底部.

我已经谷歌搜索了解决方案,但我找不到一个好的和可靠的.

Bha*_*rat 16

试试这个代码

RichEdit1.SetFocus;
RichEdit1.SelStart := RichEdit1.GetTextLen;
RichEdit1.Perform(EM_SCROLLCARET, 0, 0);
Run Code Online (Sandbox Code Playgroud)

  • @Daniel:我不是百分百肯定,但我怀疑`RichEdit1.GetTextLength`比'Length(RichEdit1.Text)`快**.前者只向Rich Edit窗口发送一条"WM_GETTEXTLENGTH"消息(正如微软希望你这样做),而另一条消息首先必须以字符串形式获取整个文本(可能非常慢?),然后读取长度的主要内容.它(非常快).更新:对不起,你想使用`GetTextLen`,Bharat使用`Length`.我把你搞砸了! (4认同)

Nik*_*iki 7

这是更简单快捷的解决方案:

在 OnChange 事件处理程序中:

SendMessage(RichEdit1.handle, WM_VSCROLL, SB_BOTTOM, 0);

原始答案来自:https : //www.experts-exchange.com/questions/21002277/Richedit-autoscrolling.html