Medienwiedergabe stockt :-(
-
Hat jemand eine Möglichkeit MediaPlayer1->Position = TrackBar1->Position in einem Timer abzufragen, ohne das mein lied stottert???
Danke
-
Linuxguru schrieb:
Hat jemand eine Möglichkeit MediaPlayer1->Position = TrackBar1->Position in einem Timer abzufragen, ohne das mein lied stottert???
Danke
Warum postest Du denn doppelt?
Manchmal braucht man auch ein wenig geduld.
Nun zu Deinem Problem. Ich hoffe, ich habe es richtig interpretiert das Du die Trackbar laufen lassen willst, wenn der Titel läuft oder willst Du die Trackbar verschieben und dann dafür sorgen das der MediaPlayer weiter vor spielt oder was?
Für das 1. Szenario sollte es in Deiner OnTimer Funktion so aussehen:
Trackbar1->Position = MediaPlayer1->Position ;Jedoch solltest Du vielleicht auch den beim Laden der abzuspielenden Datei darauf achten die Länge von Trackbar1 auf die er Datei.
Bei abspielen von CD gab es Probleme mit der Position. So war es jedenfalls noch vor 4 Jahren.
Für das 2. Szenario solltest Du eigentlich nur in der OnChange Funktion dies hineinschreiben:
MediaPlayer1->Stop() ; MediaPlayer1->Position = Trackbar1->Position ; MediaPlayer1->Play() ;Denke das dies so funktionieren sollte.
VG
Heinzelmännchen
MediaPlayer1->Po
-
Danke für deine Antwort.
Ich möchte beides haben. Zum einen, dass Die Trackbar mit dem Lied läuft und zum anderen sollte ich das Lied auch noch spulen können.
Dadurch das der timer für die Trackbarpositionsaktualisierung läuft kann ich das lied nicht korrekt und stockfrei hören. Bei jeden aktualiesieren der Trackbarpostion hakt das lied kurz.
Eine Möglichkeit wäre, solange kein Mausereignis auf die Trackbar stattfindet, den code im trackbarchange ereignis zu deaktivieren.
Allerdings gibts kein MouseDownereignis auf der Trackbar.void __fastcall TForm1::Timer3Timer(TObject *Sender) { TrackBar1->Position = MediaPlayer1->Position; } void __fastcall TForm1::TrackBar1Change(TObject *Sender) { if (Maustaste gedrückt) { MediaPlayer1->Stop(); MediaPlayer1->Position = TrackBar1->Position; MediaPlayer1->Play(); } }Kann mir jemand sagen, wie ich trotz den nicht existierenden Mousedown ereigisses abfragen kann, ob bei Trackbar die linke maustaste gedrückt ist?
Danke
-
Probier mal das:
void __fastcall TForm1::Timer3Timer(TObject *Sender) { TrackBar1->Tag=1; TrackBar1->Position = MediaPlayer1->Position; TrackBar1->Tag=0; } void __fastcall TForm1::TrackBar1Change(TObject *Sender) { if ( TrackBar1->Tag!=1) { Timer3->Enabled=false; if (Maustaste gedrückt) { MediaPlayer1->Stop(); MediaPlayer1->Position = TrackBar1->Position; MediaPlayer1->Play(); } Timer3->Enabled=true; } }
-
na das war doch mal ne hilfe... danke vielmals...
darf ich mal fragen, was dieses tag in diesen fall aussagt??
nur eine boolische variable oder hat die eine sonderfunktion?
MfG
-
Genau wie Du sagst, nur ist die halt schon da - ist Teil jeder Kompo zur freien Verwendung!