Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi nächsten Song mittels OnNotify der TMediaPlayer Komponente (https://www.delphipraxis.net/40837-naechsten-song-mittels-onnotify-der-tmediaplayer-komponente.html)

klomann3 21. Feb 2005 20:42


nächsten Song mittels OnNotify der TMediaPlayer Komponente
 
Hallo,
Ich hätte da mal eine kleine Frage, ich bin dabei nen kleinen Media Player zu proggen, nichts großes.
Ich habe zunächst mal eine Playlist mit der ListBox Kompo. gemacht.
Funktioniert soweit auch wunderbar, aber wenn ein Lied zuende ist muss das nächste gespielt werden und da haperts bei mir, bisher hab ich das so gelöst, nur schmiert der Player ab wenn man dann einen Eintrag in der ListBox(Playlist) auswählt:

Delphi-Quellcode:
procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
Listbox1.ItemIndex := Listbox1.ItemIndex + 1;
    OpenDialog1.FileName := ListBox1.Items[Listbox1.ItemIndex];
    MediaPlayer1.FileName := OpenDialog1.FileName;
    MediaPlayer1.Open;
    MediaPlayer1.Play;
    Label5.Caption := MediaPlayer1.FileName;
end;
Könnte mir da freundlicherweise mal jemand zur Hand gehen, und mir sagen wie ich das richtig progge?, Vielen Dank schonmal im Vorraus an alle die mir helfen und helfen wollen.

ft16a 22. Feb 2005 08:57

Re: nächsten Song mittels OnNotify der TMediaPlayer Komponen
 
Hmmm...Wozu jedesmal einen einen Open- DIALOG aufrufen ???
Wenn in der Liste schon Namen drinstehen...
...müßte es doch reichen, Filename gleich dem MediaPlayer zu übergeben...?!
Kleiner Test...Filenamen beim Create schon geladen...
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  {1. Item in Listbox}
  ListBox1.Items.Text :=
  'c:\windows\media\Jungle Fehler.wav' ;
  {2. Item in Listbox}
  ListBox1.Items.Add('c:\windows\media\Jungle Frage.wav') ;
  {3.Item in Listbox}
  ListBox1.Items.Add('c:\windows\media\Jungle Öffnen.wav');

  {1. Item- Wert laden und öffnen}
  MediaPlayer1.Filename := Listbox1.Items[0] ;
  MediaPlayer1.open ;
end;

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
    {Das übliche: Listbox- Index um 1 hochzählen, abspielen...}
    Listbox1.ItemIndex := Listbox1.ItemIndex + 1;
    Label5.Caption := Listbox1.Items[Listbox1.ItemIndex] ;
    MediaPlayer1.FileName := Listbox1.Items[Listbox1.ItemIndex] ;
    MediaPlayer1.Open;
    ...
   {Wenn höchster Listeneintrag erreicht ist...stoppen oder was anderes tun...}
    ...
end;

alcaeus 22. Feb 2005 09:00

Re: nächsten Song mittels OnNotify der TMediaPlayer Komponen
 
Zitat:

Zitat von ft16a
Hmmm...Wozu jedesmal einen einen Open- DIALOG aufrufen ???

Warum? Das hier:
Delphi-Quellcode:
OpenDialog1.FileName := ListBox1.Items[Listbox1.ItemIndex];
MediaPlayer1.FileName := OpenDialog1.FileName;
ruft AFAIR keinen OD auf. Er setzt nur den Dateinamen des OpenDialogs, um ihn anschließend von dort zu übernehmen. AFAIK wird ohne den Aufruf von Execute oder Show kein OpenDialog angezeigt.
Nichtsdestotrotz ist obiger Code Schwachfug ;)

Greetz
alcaeus

mumu 22. Feb 2005 09:00

Re: nächsten Song mittels OnNotify der TMediaPlayer Komponen
 
ähm ich würde mal überprüfgen, ob der index zulässig ist. nicht, dass du aus der listbox hinausschiesst ;-)

klomann3 22. Feb 2005 13:28

Re: nächsten Song mittels OnNotify der TMediaPlayer Komponen
 
irgendwie bin ich ein wenig verwirrt von den Antworten hier.
Also mit dem Code von ft16a kann ich irgendwie nichts anfangen.
Wieso soll ich denn beim FormCreate festlegen welche Datei geladen werden soll?, das wird doch über einen Button geregelt welche Playlist geladen werden soll, oder welche Datei man der Playlist hinzufügt.

@alcaeus:

Weshalb ist denn der Code Schwachfug?

@mumu:

Verstehe nicht ganz was du meinst, kannst ja vll mal nen Beispielcode beigeben, wäre nett.

klomann3 22. Feb 2005 13:31

Re: nächsten Song mittels OnNotify der TMediaPlayer Komponen
 
irgendwie bin ich ein wenig verwirrt von den Antworten hier.
Also mit dem Code von ft16a kann ich irgendwie nichts anfangen.
Wieso soll ich denn beim FormCreate festlegen welche Datei geladen werden soll?, das wird doch über einen Button geregelt welche Playlist geladen werden soll, oder welche Datei man der Playlist hinzufügt.

@alcaeus:

Weshalb ist denn der Code Schwachfug?

@mumu:

Verstehe nicht ganz was du meinst, kannst ja vll mal nen Beispielcode beigeben, wäre nett.

EDIT: Sorry das ich den Beitrag 2 mal abgeschickt habe, hatte Browser Probs.

ft16a 22. Feb 2005 19:16

Re: nächsten Song mittels OnNotify der TMediaPlayer Komponen
 
Zitat:

Also mit dem Code von ft16a kann ich irgendwie nichts anfangen.
Wieso soll ich denn beim FormCreate festlegen welche Datei geladen werden soll?, das wird doch über einen Button geregelt welche Playlist geladen werden soll, oder welche Datei man der Playlist hinzufügt.
War doch nur so ein kleiner Codeschnipsel zur Demonstration...Klar sollen der Dateien- Ladebefehl nicht fest in FormCreate stehen...sollte doch nur die Listbox mit den Namen von 3 Wav- Dateien füllen.
ft16a

retnyg 22. Feb 2005 19:25

Re: nächsten Song mittels OnNotify der TMediaPlayer Komponen
 
bei meinem player http://www.delphipraxis.net/internal...ct.php?t=46893 habe ich einfach ne variable die die gesamtzahl aller lieder beinhaltet sowie eine für das aktuelle lied.
im onnotify wird dann anhand der position des mediaplayers überprüft ob das notify am anfang oder am ende aufgerufen wird.
anschliessend wird die routine playitem(aktuellenummer + 1) aufgerufen, die a) überprüft ob der listenindex übreschritten wird und b) falls nein, das passende lied abspielt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz