3

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

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

Tmemo 行包含信用文本,例如:

谢谢:
Junifer lamda 示例
用户 2
Coder Monalisa

一切都按预期工作,我将 timer.interval 设置为 1ms ,文本滚动流畅,但它只显示前 3 行,然后显示一个空格,除非我在备忘录中使用鼠标手动单击并拖动,然后它显示一些线条,然后当我释放时它再次消失。

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

4

1 回答 1

4

在我看来,这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)以避免滚动时闪烁。

于 2012-01-01T15:01:28.590 回答