Entwickler-Ecke
Multimedia / Grafik - automatisch weiterspielen in einer Playlist
aisti5792 - So 30.05.10 14:16
Titel: automatisch weiterspielen in einer Playlist
Hallo!
Ich bin gearde dabei das ich einen Mediaplayer mit Delphi programmiere und bisher läuft es sehr gut, doch ich sitze nun schon einige Stunden dabei, dass die Lieder in der Playlist automatisch fortgesetzt werden, aber ich scheitere immer wieder.
Hier ist der Code zur Listobx (meine Playlist), ich hoffe ihr habt einige Ideen wie ich das lösen könnte.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.ListBox1Click(Sender: TObject); var i: Integer; begin for i:=0 to listbox1.Items.Count -1 do begin if listbox1.Selected[i] then mediaplayer1.FileName:=listbox1.Items.Strings[i]; mediaplayer1.Open; mediaplayer1.Play; Progressbar1.Max:=Mediaplayer1.Length; label2.Caption:=timetostr((mediaplayer1.TrackLength[1]/(3600000*24))); label4.Caption:=mediaplayer1.FileName; end; end; |
Danke.
lg Thomas :)
Moderiert von
Narses: Code- durch Delphi-Tags ersetzt
Bergmann89 - So 30.05.10 14:48
Hey,
speicher dir beim klicken auf die ListBox einfach den Index. Und wenn der Player das lied zu ende gespielt hat erhöhst du den INdex um 1 und spielst erneut ab (Dazu würde sich eine Prozedur anbieten: procedure PlayFile(Filename: String) oder so). Ob das Lied fertig gespielt wurde kannst du mit der Länge un der aktuellen Position des Tracks prüfen...
MfG Bergmann
aisti5792 - So 30.05.10 15:20
Danke für die schnelle Antwort.
Mit Hilfe eines Arrays kann ich den Index abspeichern, nur leider habe ich keine Idee wie ich das genau machen sollte. Ich weiß einfach nicht wie ich "i" abspeichern sollte, also den Titel der gerade gespielt wird.
Bergmann89 - So 30.05.10 22:46
Hey,
die schleife hab ich ganz übersehen, das is ziemlich unpraktich. An den Index, der grade geklickt wurde kommt man so:
ListBox1.ItemIndex. Zum Speichern brauchst du eine Variable die auch außerhalb der Prozedur gültig ist, also entwerder
eine globale Variable:
- für alle Units sichtbar
- deklaration vor implementation
- ABER: globale Variablen sollte man vermeiden
eine Klassen-Variable:
- nur dür die aktuelle Unit sichtbar
- deklaration nach implementation
- ABER auch die sollte man nur gebrauchen wenn sie unbedingt notwendig sind.
eine Objekt-Variable
- sichtbar für das Objekt in dem sie deklariert wurde
- deklaration im private-Teil des Objekts (also bei dir unter TForm1 private)
- --> das was du sucht
kleines Beispiel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| type TForm1 = class(TForm) ListBox1: TListBox; MediaPlayer: TMediaPlayer; TimeProgressBar: TProgressBar; TimeLabel: TLabel; FileNameLabel: TLabel; procedure ListBox1Click(Sender: TObject); private CurrentTrackIndex: Integer; procedure PlayFile(Filename: String); public end;
procedure TForm1.PlayFile(Filename: String); begin MediaPlayer.FileName := Filename; MediaPlayer.Open; MediaPlayer.Play; TimeProgressBar.Max := Mediaplayer1.Length; TimeLabel.Caption := TimeToStr((MediaPlayer.TrackLength[1]/(3600000*24))); FilenameLabel.Caption := Filename; end;
procedure TForm1.ListBox1Click(Sender: TObject); begin CurrentTrackIndex := ListBox1.ItemIndex; PlayFile(ListBox1.Items[CurrentTrackIndex]); end; |
Außerdem solltest du dir angewöhnen, deinen Komponenten ordentliche Namen zu geben, sonst wird das schnell unübersichtlich. Außerdem bietet es sich an, eine TeilAktion wie z.B. das Abspielen einer Datei, in eine Prozedur auszulagern. Da du ja scheinbar auch noch nicht so lange dabei bist kann ich dir
diesen Crashkurs [
http://www.christian-stelzmann.de/artikel/crashkurs.htm] ans Herz legen, da werden die Grundlagen ausführlich erklärt ;)
MfG Bergmann
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!