Hi,
Beim Laden der Datei weise ich TrackBar.Max die Länge der Datei in Milisekunden zu. Hier mal wie es bis jetzt ist (ich arbeite mit der bass.dll):
Delphi-Quellcode:
function TForm1.GetSoundInfo(Info: String): Int64;
var
MilliSec: Integer;
FloatPos: Float;
begin
If Info = 'GetLength' then FloatPos:=BASS_ChannelBytes2Seconds(Channel, BASS_ChannelGetLength(Channel)) //wird beim zuweisen abgerufen
Else If Info = 'GetPosition' then FloatPos:=BASS_ChannelBytes2Seconds(Channel, BASS_ChannelGetPosition(Channel));
MilliSec:=Trunc(1000 * FloatPos);
If MilliSec < 0 then MilliSec:=0;
Result:=MilliSec;
end;
procedure TForm1.TimerTimer(Sender: TObject);
begin
If SoundObject <> nil then //wenn ein Sound gespielt wird
begin
TrackBar.Position:=GetSoundInfo('GetPosition');
end;
end;
procedure TForm1.TrackBarChange(Sender: TObject);
var
TBP, BGP: Integer;
begin
TBP:=TrackBar.Position;
BGP:=GetSoundInfo('GetPosition');
If ABS(TBP - BGP) > 1000 then BASS_ChannelSetPosition(Channel, BASS_ChannelSeconds2Bytes(Channel, TrackBar.Position div 1000));
end;
procedure TForm1.TrackBarMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
If X > 8 then
begin
TrackBar.Position:=Trunc(X * (TrackBar.Max + 8) / (TrackBar.Width - 16)) - ((TrackBar.Max div Width) * 10);
end;
end;
Wenn ich aber nun auf die TrackBar klicke, dann ist der Slider, je weiter rechts ich auf die TrackBar klicke, nicht dort, wo ich die Maus hatte.
Gruß Mazel