Aus dem anderen Beitrag:
Delphi-Quellcode:
{Timer1.Interval := 300;}
{TrackBar1.Max := MediaPlayer1.Length div 1000;}
Procedure TForm1.Timer1Timer(Sender: TObject);
Begin
(* TrackBar-Position an die MediaPlayer-Position anpassen *)
TrackBar1.Position := MediaPlayer1.Position div 1000;
End;
Procedure TForm1.TrackBar1Change(Sender: TObject);
Var TBP, MPP: Integer;
Begin
TBP := TrackBar1.Position;
MPP := MediaPlayer1.Position div 1000;
(* MediaPlayer-Position an die TrackBar-Position anpassen, *
* wenn der Unterschied grösser als 2 Sekunden ist *)
If ABS(TBP - MPP) > 2 Then MediaPlayer1.Position := TBP * 1000;
End;
Wie du dort sehen wirst, hab ich diese Problem durch eine kleine Abrage gelöst.
If ABS(TBP - MPP) > 2 Then
Dadurch wird die MediaPlayer-Position nur bei einer grösseren Änderung (> 2 Sekunden) geändert.
Alternativ währe auch der Einsatz einer zusätzlichen Variable möglich.
Delphi-Quellcode:
{Timer1.Interval := 300;}
{TrackBar1.Max := MediaPlayer1.Length div 1000;}
Var setzen: Boolean = True; {*}
Procedure TForm1.Timer1Timer(Sender: TObject);
Begin
setzen := False; {*}
TrackBar1.Position := MediaPlayer1.Position div 1000;
setzen := True; {*}
End;
Procedure TForm1.TrackBar1Change(Sender: TObject);
Var TBP, MPP: Integer;
Begin
If setzen Then Exit; {*}
TBP := TrackBar1.Position;
MPP := MediaPlayer1.Position div 1000;
If ABS(TBP - MPP) > 2 Then MediaPlayer1.Position := TBP * 1000;
End;