Zitat von
papabaer:
Ich vermute, dann hast du aber einen Timer verwendet, der regelmäßig die Position abfragt. Hat dies keine Auswirkungen auf die Performance?
Ganz falsch vermutet.
Denn der Mediaplayer führt das Notify-Event aus wenn ein Lied zu ende ist (unter anderem).
So muss man nur abfragen, ob das Lied wirklich zu ende ist, oder ein anderes Ereignis geschehen ist (bspw. Player gestoppt).
Daher braucht man keinen Timer (obwohl es damit auch geht) sondern muss den Code lediglich in's Notify-Ereignis schreiben.
Zitat von
EWeiss:
mpStopped wird wenn überhaupt nur ausgelößt wenn der Song zu ende ist oder ?
Also benötigst du in einem Timer die abfrage
(MPlayer.Position >= MPlayer.Length)
wenn die bedingung erfüllt ist .. erst dann ist mpStopped = True
Ist mpStopped keine Message dann mußt du den mode erst zuweisen.
if (MPlayer.Position >= MPlayer.Length) then mpStopped = True
gruß
Afaik wird TMEdiaPlayer.Mode auf mpStopped gesetzt, wenn man die Prozedur TMediaplayer.Stop ausführt.
Manuell setzen braucht man es nicht.
Und dann könnte man genausogut das Fenster durch den Timer schließen lassen.
Aber ich habe oben ja schon eine andere Möglichkeit genannt.