Autor Beitrag
Mattes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Di 24.09.02 14:15 
Bitte erschlagt mich nicht, das Thema gab´s bestimmt schon hundertmal und ich finde es nicht :D

Als relativer Delphi-Anfänger will ich in einer Anwendung Hintergrundmusik laufen lassen.

Wie kann ich z.B. 5 Lieder nacheinander laufen lassen (TMediaPlayer soll automatisch zum nächsten Lied springen und nach dem letzten wieder zum ersten)?

Verwende ich hier eine TListBox und wenn ja, wie sage ich dem MP, dass er die Einträge nacheinander abarbeitet?

Danke schön im voraus :D
SvenAbeln
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 334
Erhaltene Danke: 3



BeitragVerfasst: Di 24.09.02 15:15 
Hallo,

TMediaPlayer hat leider keine Playliste, aber er erzeugt ein Ereignis OnNotify wenn Play beendet ist und du kannst dann einfach das nächste Lied starten.
Mattes Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Mi 25.09.02 07:36 
Danke.
Mit zwei Liedern (eins bei OnCreate der Form, das nächste bei MPNotify) funktioniert das auch wunderbar. Doch wie "geb" ich ihm dann das 3., 4. usw...vor??? :?:
Sephiroth
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 102



BeitragVerfasst: Mi 25.09.02 08:18 
Mach doch einfach ein Array in dem alle Fünf lieder drin stehen und mach einen Zähler der nach jedem fertigen Lied sich um eins erhöht und dadurch den nächsten Eintrag im Array abarbeitet (also nächstes Lied)
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mi 25.09.02 08:20 
Hi
sollte so funktionieren (nicht getestet):
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm2.MediaPlayer1Notify(Sender: TObject);
begin
   if  Liste.ItemIndex < Liste.Items.Count - 1 then
       Liste.ItemIndex := Liste.ItemIndex + 1
   else
       Liste.ItemIndex := 0;
   MediaPlayer1.FileName := Liste.Items[Liste.ItemIndex];
   MediaPlayer1.Notify    := True;
   MediaPlayer1.Play;
end;

Liste ist deine Liste mit den abzuspielenden Dateinamen. Bei jedem NotifyEvent muss die Eigenschaft Notify erneut auf True gesetzt werden, damit der Event erneut aufgerufen wird.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Mattes Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Mi 25.09.02 21:35 
Danke einstweilen, werde ich morgen gleich mal ausprobieren :)
Mattes Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Fr 27.09.02 10:24 
Hm, irgendwas mach ich wohl falsch.
Nach dem Ende der ersten MP3-Datei (die von MediaPLayer automatisch bei Programmstart ausgeführt wird) fängt der Markierungsbalken in der Liste an zu rennen, von oben nach unten und wieder von vorne.
Aber der MediaPlayer reagiert darauf nicht... Jemand ne Idee? :?:
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Sa 28.09.02 19:55 
Hi,

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm2.MediaPlayer1Notify(Sender: TObject); 
begin 
   if  Liste.ItemIndex < Liste.Items.Count - 1 then 
       Liste.ItemIndex := Liste.ItemIndex + 1 
   else 
       Liste.ItemIndex := 0; 
   MediaPlayer1.FileName := Liste.Items[Liste.ItemIndex]; 
   MediaPlayer1.Notify     := True; 
   MediaPlayer1.Play; 
end;

ist ja im grunde fast richtig... es fehlt nur eins, nämlich gibt der Player auch ein Notify wenn er anfängt abzuspielen = Auch dann wird das da oben ausgelöst...

du mußt einfach prüfen ob die NotifyMessage vom MediaPlayer =nmSuccesfull (oder soähnlich, guck mal in die Hilfe, da steht's genau) ist. dann gehts :)

Au'revoir,
Aya
Mattes Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Mo 30.09.02 11:16 
Der Tip war schon mal gut, Danke.
Aber der Anfänger Mattes muß nochmal auf das Thema zurückkommen :)

Nach Ende des ersten Titels, der im MP unter FileName ausgewählt wurde, beginnt die Auswahl in der Liste zu "laufen" (1.mp3, 2.mp3, 3.mp3 ...)
Doch es wird immer wieder der Titel abgespielt, der im Objektinspektor eingetragen ist (1.mp3).

Ohne eingegebenen FileName im MediaPlayer startet das Programm gar nicht, d.h.dort muß eine "Startdatei" angegeben sein.

D.h.die Dateiaufrufe aus der FileListBox werden nicht in FileName des MP übernommen!?

:?:
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Mo 30.09.02 15:11 
Titel: hier ist meine lösung
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
// oben
var
  index:Integer = 0;

procedure PLayListe;
var
  List:TStringList;
begin
  List:=TStringList.Create;
  list.add('FileName0');
  list.add('FileName1');
  list.add('FileName2');
  list.add('FileName3');
  if MediaPlayer1.Mode = MP_Stopped then begin
    if index = liste.Count -1 then
      index:=0 
    else
      inc(index);  
    MediaPlayer1.FileName:=Liste.Strings[i];
    MediaPlayer1.Open;
    MediaPlayer1.Play;
  end;
end

die funktion ruft du einfach in einem Timer auf denn Timer stellst du z.B auf 1 und dann sollte es gehen,ich habe es nicht getsetet. Wenn fragen sind dann Frage :)

MFG
mimi
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mo 30.09.02 15:27 
Hi
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
   if  Liste.ItemIndex < Liste.Items.Count - 1 then
       Liste.ItemIndex := Liste.ItemIndex + 1
   else
       Liste.ItemIndex := 0;
   mp.FileName := Liste.Items[Liste.ItemIndex];
   mp.Open;
   mp.Notify     := True;
   mp.Play;

Voreingestellte Eigenschaften
AutoEnable := True;
AutoOpen := True;
AutoRewind := False;
DeviceType := dfWaveAudio

Und: Es funzt :!: :mrgreen:

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...