Hola, les cuento que estoy haciendo (como tantos otros) un reproductor de mp3. En el, manejo un playlist hecho con un tlistbox e hice (buscando en este foro como hacerlo) con un ttimer un metodo para reproducir las canciones de la lista ya sea aleatoriamente o de uno en uno. El codigo quedo asi :
Código Delphi
[-]
procedure TForm1.Timer1Timer(Sender: TObject);
var
r:integer;
begin
if mediaplayer1.Mode=mpstopped then
begin
If MediaPlayer1.position=mediaplayer1.Length then
begin
If checkbox1.Checked=false then
begin
If ListBox1.itemindex= ListBox1.items.count then
ListBox1.itemindex:= -1;
ListBox1.itemindex:= ListBox1.itemindex + 1;
listbox2.ItemIndex:=listbox2.ItemIndex + 1;
end;
If checkbox1.Checked=true then
begin
Randomize;
r:= Random(ListBox1.items.count);
listbox1.ItemIndex:=r;
listbox2.ItemIndex:=r;
end;
reproducirdelistbox(listbox1.ItemIndex);
end;
end;
end;
donde reproducirdelistbox es una funcion que uso para reproducir la cancion que este seleccionada en el listbox.
El procedimiento anda, cuando termina una cancion pasa a la siguiente ya sea aleatoriamente o a la inmediatamente siguiente. El problema está en que cuando pulso stop y la canción está por terminar salta a la siguiente canción. Al parecer, segun creo yo, la propiedad position alcanza a la propiedad length antes de que la canción termine. Si me pueden ayudar le estaria agradecido, porque busque bastante y no encontre nada excepto
esto que es de donde use para hacer el mio.