delphi中的自动滚动备忘录

delphi中的自动滚动备忘录,delphi,delphi-7,Delphi,Delphi 7,delphi是否包含允许从db加载自动滚动文本的组件,如在新闻网站中 Tt用于delphi 7应用程序,需要垂直滚动。为了节省一些钱,您可以将其调整为滚动DBMemo: EchoMemo.Lines.Add('A Line of text or more'); EchoMemo.SelStart := EchoMemo.GetTextLen; EchoMemo.SelLength := 0; EchoMemo.ScrollBy(0, EchoMemo.Lines.Count); EchoMemo

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


Tt用于delphi 7应用程序,需要垂直滚动。

为了节省一些钱,您可以将其调整为滚动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;

我用于日志显示。

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

procedure ScrollToLastLine(Memo: TMemo);
begin
  SendMessage(Memo.Handle, EM_LINESCROLL, 0,Memo.Lines.Count);
end;

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

在RichEdit备忘录中,这些滚动解决方案都不适用于我。使用Delphi2010+w7。 但这一条非常有效:

在每个
行之后添加(“…”)
如下所示:

SendMessage(RichEditMemo.Handle, WM_VSCROLL, SB_LINEDOWN, 0);
位于:
您也可以使用
Memo.GoToTextEnd在需要时,例如在onchange事件中。不是正确的自动滚动效果,但在类似情况下可能有用。

如果您使用的是DevExpress组件,则应使用
InnerControl->Handle
。所以它应该是这样的:

SendMessage(cxMemo->InnerControl->Handle, EM_LINESCROLL, 0,cxMemo->Lines->Count);

在同一个应用程序中发送消息的正确方法是使用命令SendMessage将其发送到windows流,而perform将其直接发送到组件。如此之多以至于他甚至不要求把手:


memo1.Perform(WM_VSCROLL,SB_LINEDOWN,0)

嗯,比我的短,有人吗?:)这个卷轴快多了。你怎么能让它慢下来?@none,你说的慢下来是什么意思?你要做一个滚动的视觉效果吗?是的,某种。就像新闻快闪滚动备忘录。所以根本不想要滚动备忘录。。。您需要将文本绘制到TPrimtBox上,然后慢慢滚动绘图位置:)来自“VCLeDeRever”的答案是最好的,但另一个要考虑的选项是简单地将代码添加到<代码> TMemo < /代码>(或类似)VCL控件中,以相反的顺序。这将把最新的项目放在最上面,这可能根本不需要滚动。