如何在循环中定期更改 TLabel 标题?

how to change TLabel caption with regular intervals in a loop?

我想让 TLabel 标题在循环中以固定间隔显示 TListbox 的项目。

Listbox1: TListbox 我有这些项目:

Item1
Item2
Item3
Item4 

我有一个 Label1: TLabel,我想依次显示 Listbox1 的每一项,持续 4 秒。显示最后一项后,应该return显示第一项。

我不知道该怎么做,但我尝试使用此代码..但它不起作用

var
  i:integer
begin
  for i:=0 to Listbox1.Items.count do    
    Label1.Caption := Listbox1.items[i];

有什么办法吗?

您需要一个地方来存储所显示项目的索引,直到需要更改为下一个项目。因此,在表单的 private 部分创建一个 integer 类型的字段并将其命名为 IndexCounter

您还需要设置标签更改频率的设置。在表格上放一个 TTimer。将其 Interval 属性 设置为 4000(以毫秒为单位)。

选择添加的计时器后,切换对象检查器以显示事件,然后双击 OnTimer 的输入字段。已为您创建活动程序:

procedure TForm1.Timer1Timer(Sender: TObject);
begin

end;

填写代码使IndexCounter递增并使用整数除法取余函数(mod)得到0..ListBox1.Count-1.[=22范围内的值=]

IndexCounter := (IndexCounter + 1) mod ListBox1.count;

添加代码以显示索引为 IndexCounter 的列表框项目。

Label1.Caption := ListBox1.Items[IndexCounter];