在delphi中自动滚动备忘录

non*_*one 10 delphi delphi-7

delphi是否包含允许从db加载的自动滚动文本的组件,比如在新闻站点中?

这是一个delphi 7应用程序,需要垂直滚动.

vcl*_*per 32

对于这么简单的任务,您不需要购买商业组件!您需要做的就是向该备忘录控件发送EM_LINESCROLL消息,使其滚动到最后一行:

procedure ScrollToLastLine(Memo: TMemo);
begin
  SendMessage(Memo.Handle, EM_LINESCROLL, 0,Memo.Lines.Count);
end;
Run Code Online (Sandbox Code Playgroud)

如果您的备忘录对用户是只读的并且由应用程序自动更新,您可以在其OnChange事件处理程序中调用上述过程,这样每当备忘录中的文本发生更改时,它会自动向下滚动到最后一行.

  • 因此,根本不需要滚动备忘录...您需要将文本绘制到TPaintbox上,然后慢慢滚动绘画位置:) (5认同)

小智 6

在RichEdit备忘录中,这些滚动解决方案都没有为我工作.使用Delphi 2010 + w7.但这个完美无缺:

在每一次之后Lines.Add('...'):

SendMessage(RichEditMemo.Handle, WM_VSCROLL, SB_LINEDOWN, 0);
Run Code Online (Sandbox Code Playgroud)

发现于:http: //www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_10120212.html


Des*_*her 5

可能,为了节省一些钱,你可以调整它来滚动DBMemo:

EchoMemo.Lines.Add('A Line of text or more');
EchoMemo.SelStart := EchoMemo.GetTextLen;
EchoMemo.SelLength := 0;
EchoMemo.ScrollBy(0, EchoMemo.Lines.Count);
EchoMemo.Refresh;
Run Code Online (Sandbox Code Playgroud)

我用于日志显示.