Stránka 1 z 1

Delphi - přehrávání písniček postupně

Napsal: 24 lis 2010 11:26
od Irox
Zdravím,

nejdříve bych se chtěl zeptat, jak podmínkou zjistím, že v komponentě listbox není nic? Nemohu na to přijít, omlouvám se, pokud to tady někde je.

A tou hlavní otázkou je mp3 přehrávač. Potřeboval bych poradit, jak napsat např. pomocí cyklu, aby se soubory v seznamu (listbox) postupně přehrávaly.
Jde totiž o budík, který si ve chvílích volna vylepšuji. Nejdříve vždy běžel jen s jednou adresou k souboru a pokud jsem chtěl, aby mě vždy po několika minutách opět hrál, musel jsem aplikací spustit několik a každou nastavit zvlášť. Nyní jsem budík vylepšil o několik věcí a vícenásobné nahrávání souborů. Vše už běží jak má, pouze už si nevím rady, jak uložit do proměnné vždy první řádku (adresu) souboru a tu pomocí media playeru přehrát. Až by dohrála jedna (chtěl bych ještě možnost nastavit, po jaké době), začne hrát druhá, třetí,...

Za všechny odpovědi mockrát děkuji.

Re: Delphi - přehrávání písniček postupně

Napsal: 24 lis 2010 13:55
od CZechBoY
Vítej na PC-HELP!
asi existuje v Delphi něco jako Length(listbox.Items) mohlo by to vrátit počet itemů v listboxu, takže když bude 0 nic tam není

Re: Delphi - přehrávání písniček postupně

Napsal: 24 lis 2010 14:55
od Sender
Listbox1.Items.Count

Re: Delphi - přehrávání písniček postupně

Napsal: 25 lis 2010 10:51
od Irox
Děkuju moc.
A k té druhé otázce, poradil by někdo prosim?

Re: Delphi - přehrávání písniček postupně

Napsal: 25 lis 2010 18:22
od Sender
opakovaný přehrávání můžeš zkusit třeba takhle:

Kód: Vybrat vše

var
Form1: TForm1;
Loop : boolean;

implementation

{$R *.dfm}

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
if (MediaPlayer1.NotifyValue = nvSuccessful) and (Loop=true) then
begin
MediaPlayer1.Play;
MediaPlayer1.Notify := true;
end;
end;

procedure TForm1.PlayClick(Sender: TObject);
begin
Loop := true;
MediaPlayer1.Play;
MediaPlayer1.Notify := true;
end;

procedure TForm1.StopClick(Sender: TObject);
begin
Loop := false;
MediaPlayer1.Stop;
MediaPlayer1.Notify := true;
end;
end.


V objectinspektoru je třeba nastavit AutoOpen, AutoRewind a AutoEnable na True

Re: Delphi - přehrávání písniček postupně

Napsal: 28 lis 2010 17:16
od Irox
Děkuji moc. Jede to jak má :)

Re: Delphi - přehrávání písniček postupně

Napsal: 07 úno 2011 19:27
od Irox
Jinak řešil jsem poté ještě postupné přehrávání pisniček z listboxu, kde v listboxu jsou uloženy celé cesty souborů. Takže kdyby někdo řešil stejný problém, vymysel jsem takový "skákající" kód, který funguje bez chyby:

Kód: Vybrat vše

procedure TForm1.Hraj;
begin
 if Lbx.Items.Count <> 0 then
 begin
 TimerGaugeBar.Enabled := True;
 Music.Open;
 Music.Play;
 TimerPlay.Enabled := True;
 end;
end;

procedure TForm1.TimerPlayTimer(Sender: TObject);   
begin
if Music.Position = Music.TrackLength[Music.Length] then
begin
TimerPlay.Enabled := False;
HrajNext;
end;
end;

procedure TForm1.HrajNext;
begin             
 TimerPlay.Enabled := False;
 Music.Close;
 TimerGaugeBar.Enabled := False;
 q := q + 1;
 if q > Lbx.Items.Count-1 then
 Music.Close
 else begin
 Music.FileName := Lbx.Items[q];
 Music.Open;
 TimerGaugeBar.Enabled := True;
 Gauge1.Progress := 0;
 Hraj;
 end;
end;


- Jde pouze o tři hlavní procedury, kdy se úplně první pisnička v seznamu zcela normálně přehraje. V druhé proceduře mezitím timer neustále zjišťuje, zda písnička dohrála, pokud ano, procedura se vykoná a hodí běh programu na další proceduru s názvem HrajNext. V té je asi každému vše jasné, pouze ta nejdůležitější věc je až na poslední řádce, kdy program opět skočí na proceduru Hraj a tak se to neustále opakuje dokola.
Nějakou dobu mě to trvalo, než jsem na to přišel :D. Někomu se to třeba bude hodit.