PDA

Ver la Versión Completa : Ayuda con Reproductor de Musica


bigguntm
21-02-2013, 23:49:28
buenas a toda la comunidad, ahorita vengo con una detallido y quisiera que me ayudaran, yo quiero que mi playlist sea recorrido y cuando llegue a la ultima cancion se detenga, y no se repita a cada momento la ultima cancion.

el codigo que tengo ahorita es este,


var
i: Integer;
item: string;
begin
Opendialog1.Title := 'Abrir Archivos';
// Abrir.Filter := 'mp3|*.mp3,mp3|*.ogg';

if not Opendialog1.Execute then
exit;
// Extrae el nombre de la cancion agregada del open
lbmusic.Items.Add(ExtractFilename(OpenDialog1.Filename));
begin
i:= 0;
// Elimina los duplicados de lbmusic
with lbmusic.Items do
while Count > i do
begin
if IndexOf(strings[i])<>i then
Delete(i)
else
inc(i);
end;
end;
// reproducir la cancion seleccionada del open
MediaPlayer1.FileName:=OpenDialog1.Filename;
MediaPlayer1.DeviceType := dtAutoSelect;
Mediaplayer1.Open;
Mediaplayer1.Play;
// me permite pasar de cancion luego qe termine una
Timer3.Enabled := true;
// activa el progressbar
Timer5.Enabled := true;
// muestra la ventana donde se contienen las canciones
lbMusic.Visible := true;
// muestra el volumen
tbVolumen.Visible := true;
// muestra el progressbar
ProgressBar1.Visible := true;
// selecciona la cancion que agregue
lbmusic.ItemIndex := lbmusic.ItemIndex +1;
// deselecciona otro listbox
lstbprogramas.ItemIndex := -1;
// me habilita el boton de retroceder al agregar una cancion
If lbmusic.items.count = 2 then begin
btnPreview.enabled := true; end;

end;

quisiera que me ayudaran con


// timer3
begin
if lbmusic.itemindex > -1 then // si lbmusic no tiene mas cancion, que timer2 quede ne 'false' (no se como hacer para saber si hay otro item o no)
Timer2.Enabled := true else
Timer2.Enabled := false;
end;


saludos y espero su respuesta

ecfisa
22-02-2013, 05:04:14
...
quisiera que me ayudaran con


// timer3
begin
if lbmusic.itemindex > -1 then // si lbmusic no tiene mas cancion, que timer2 quede ne 'false' (no se como hacer para saber si hay otro item o no)
Timer2.Enabled := true else
Timer2.Enabled := false;
end;
...



Hola bigguntm.

Suponiendo que lbmusic sea un TListBox:

Timer2.Enabled := lbmusic.Count <> 0;


Saludos.

bigguntm
22-02-2013, 15:44:26
hola brot, gracias por responder, pero no logro entenderte la idea,


//timer3
begin
if lbmusic.Count <> 0 then
Timer2.Enabled := true else
Timer2.Enabled := false;

ejemplo, si la ultima cancion esta en reproduccion, y no hay mas cancion despues de esa, porq es la ultima, quisiera que timer2 quede en false.



//timer2

begin

If MediaPlayer1.position=MediaPlayer1.length then begin

If RandomButton.down=false then begin
If lbmusic.itemindex= lbmusic.items.count then lbmusic.itemindex:= -1;
lbmusic.itemindex:= lbmusic.itemindex + 1;
end;

If RandomButton.down=true then begin
Randomize;
lbmusic.itemindex:= Random(lbmusic.items.count);
end;

lstbprogramas.ItemIndex := -1;
MediaPlayer1.filename:= lbmusic.items[lbmusic.itemindex];
MediaPlayer1.open;
MediaPlayer1.play;
end;
end;



saludos

ecfisa
22-02-2013, 17:34:27
hola brot, gracias por responder, pero no logro entenderte la idea,
saludos
Hola.

El concepto es muy simple, la condición lbmusic.Count <> 0 arroja un resultado de tipo Boolean que será True si el primer término de la proposición lógica es diferente de cero y False si no lo es. Dicho resultado es asignado a la propiedad Enabled del TTimer, lo que hace innecesario el uso del condicional if ... then.

Saludos.