使用TTimer滚动备忘录文本只显示前3行



我现在想做的是使用TMemo组件和TTimer创建一个滚动的信用文本

 procedure TAboutBox.Timer1Timer(Sender: TObject);
 begin
 Memo1.ScrollBy(0,-1);
 end;

Tmemo行包含演职员表的文本,类似于:

Thankyou to:
Junifer lamda
用户2示例
程序员Monalisa
等等等等

一切都如预期的那样工作,我已经将timer.interval设置为1ms,文本滚动顺利,但它只显示第3行,然后显示空白,除非我在备忘录内使用鼠标手动单击和拖动,然后它显示一些行,然后当我释放时它再次消失。

我尝试了TRichedit和TListBox,但问题仍然存在。这怎么可能呢?

在我看来,ScrollBy不是设计来做你想要的。更重要的是,我也不认为TMemo是必要的。

我可能会用一个标签来做这件事,并将它移动到计时器事件上。这样的:

procedure TScrollingTextForm.FormCreate(Sender: TObject);
begin
  Label1.Caption :=
    'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do '+
    'eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad '+
    'minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip '+
    'ex ea commodo consequat. Duis aute irure dolor in reprehenderit in '+
    'voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur '+
    'sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt '+
    'mollit anim id est laborum.';
  Label1.Top := ClientHeight;
end;
procedure TScrollingTextForm.Timer1Timer(Sender: TObject);
begin
  Label1.Top := Label1.Top - 1;
end;

我发现我需要使表单双缓冲(DoubleBuffered := True),以避免滚动时闪烁

相关内容

  • 没有找到相关文章

最新更新