首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >滚动没有焦点的RichEdit

滚动没有焦点的RichEdit
EN

Stack Overflow用户
提问于 2012-03-18 17:00:21
回答 2查看 6.6K关注 0票数 7

我需要在添加一行后将RichEdit滚动到最末尾。我有一个单独形式的RichEdit,我根本不想获得焦点。我经常尝试建议的解决方案:

代码语言:javascript
复制
RichEdit.Lines.Add(someText);
RichEdit.SelStart:=RichEdit.GetTextLen;
SendMessage(RichEdit.handle, EM_SCROLLCARET, 0, 0);

但这对我不起作用。但是,当我在使用RichEdit.SetFocus;调用SendMessage之前聚焦RichEdit时,它工作得很好。然而,这破坏了我对这个应用程序的其他需求。

我使用的是XE2。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-18 17:39:27

这就是我要做的:

代码语言:javascript
复制
SendMessage(RichEdit.Handle, WM_VSCROLL, SB_BOTTOM, 0);
票数 11
EN

Stack Overflow用户

发布于 2012-03-18 17:37:36

请参阅弗朗索瓦·盖拉德的这篇博客文章:richedit-on-scrolling-strike

这看起来是个bug,下面是解决方案:

代码语言:javascript
复制
procedure ScrollToEnd(ARichEdit: TRichEdit);
var
  isSelectionHidden: Boolean;
begin
  with ARichEdit do
  begin
    SelStart := Perform( EM_LINEINDEX, Lines.Count, 0);//Set caret at end
    isSelectionHidden := HideSelection;
    try
      HideSelection := False;
      Perform( EM_SCROLLCARET, 0, 0);  // Scroll to caret
    finally
      HideSelection := isSelectionHidden;
    end;
  end;
end;
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9757134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档