我正在尝试为广播电台做一个简单的播放列表。我的大部分都在工作,每隔五个轨道就会播放一个铃声,但我遇到的问题是我不知道如何在列表中依次播放每个选中的项目(jingle)。
一步一步的行动:
答案 0 :(得分:0)
是的,有可能。您只需要一个变量来跟踪正在播放的当前索引。
从索引0开始,遍历TCheckListBox.Checked[]
属性,直到它返回true(或者到达列表的末尾)。如果找到,请保存索引并在TCheckListBox.Items[index]
属性值中播放相应的文件。
文件播放完毕后,再次循环浏览列表,从下一个索引开始。
根据需要重复。
例如:
private
FCurrentIndex: Integer;
function StartNextPlayListItem: Boolean;
...
procedure TMyForm.FormCreate(Sender: TObject);
begin
FCurrentIndex := -1;
end;
function TMyForm.StartNextPlayListItem: Boolean;
begin
Result := False;
for I := FCurrentIndex+1 to CheckListBox1.Items.Count-1 do
begin
if CheckListBox1.Checked[I] then
begin
FCurrentIndex := I;
// start playing CheckListBox1.Items[I]...
Result := True;
Exit;
end;
end;
end;
procedure TMyForm.SomeStartEvent;
begin
StartNextPlayListItem;
end;
procedure TMyForm.DonePlayingAFile;
begin
StartNextPlayListItem;
end;