Hallo,
ich bin gerade dabei einen kleinen Mediaplayer für mich zu programmieren. Dabei nutze ich die bass.dll. Nun zum Problem: ich möchte bei einem Song mit der TrackBar die Position setzen, aber das funktioniert bei mir leider nicht. Folgender Code zeigt, wie ich momentan mit der TrackBar arbeite (vereinfacht):
Delphi-Quellcode:
//zu Beginn:
TrackBar.Max:=0;
TrackBar.Position:=0;
//beim öffnen einer Datei (nach dem zuweisen von Channel):
TrackBar.Max:=GetSetSoundInfo('GetLength');
function TForm1.GetSetSoundInfo(Info: String): Int64;
var
MilliSec: Integer;
FloatPos: Float;
begin
If Info = 'GetLength' then FloatPos:=BASS_ChannelBytes2Seconds(Channel, BASS_ChannelGetLength(Channel))
Else If Info = 'GetPosition' then FloatPos:=BASS_ChannelBytes2Seconds(Channel, BASS_ChannelGetPosition(Channel))
Else Result:=BASS_ChannelSeconds2Bytes(Channel, TrackBar.Position);
If (Info = 'GetLength') or (Info = 'GetPosition') then
begin
MilliSec:=Trunc(1000 * FloatPos);
If MilliSec < 0 then MilliSec:=0;
Result:=MilliSec;
end;
end;
procedure TForm1.TimerTimer(Sender: TObject);
begin
TrackBar.Position:=GetSetSoundInfo('GetPosition');
end;
procedure TForm1.TrackBarChange(Sender: TObject);
begin
BASS_ChannelSetPosition(Channel, GetSetSoundInfo('SetPosition'));
end;
end.
Wenn ich mit der Maus den Slider der TrackBar ändern will, springt er immer wieder zu der Position von davor zurück. Ich weis nicht warum das so ist. Kann mir da jemand helfen?
Als Anhang habe ich mal den noch nicht fertigen Player mit dem Problem.
Gruß
Mazel