【问题标题】:Scrolling issues with TRichEdit in DelphiDelphi 中 TRichEdit 的滚动问题
【发布时间】:2009-09-28 21:29:03
【问题描述】:

我正在向 TRichEdit 添加行,如何将注意力集中在刚刚添加的行上?

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

编辑

我只是在 Richedit 的最后一行显示刚刚添加的内容以及所有其他行向上滚动

【问题讨论】:

  • 我认为“焦点”通常用于控件。您的意思是要选择刚刚添加的文本(将导致在下一个操作中粘贴),将插入点保留在最后添加的行上(这将导致粘贴一个很长的行)或者可能你的意思是你想滚动到richedit的底部?
  • 另请参阅此答案:Scrolling RichEdit without it having focus

标签: delphi richedit


【解决方案1】:

如果您只想滚动到 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;

如果这不是您想要的,请查看我上面的评论并澄清您的问题。

【讨论】:

    【解决方案2】:

    你可以试试这个

    选项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) 在循环执行时设置光标

    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) ;
    

    再见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      • 2021-12-06
      相关资源
      最近更新 更多