我现在想做的是使用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
),以避免滚动时闪烁