Einzelnen Beitrag anzeigen

Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#3

Re: TrackBar und richtige Position setzen

  Alt 1. Mai 2006, 13:43
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 = 'GetLengththen FloatPos:=BASS_ChannelBytes2Seconds(Channel, BASS_ChannelGetLength(Channel)) //wird beim zuweisen abgerufen
 Else If Info = 'GetPositionthen 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
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat