вот тут я когда-то переделывал TrackBar для плеера
добавил событие OnUserChange, которое вызывается только если положение слайдера вручную меняется юзером  
	Код:
	unit MediaTrackBar;
interface
uses
  SysUtils, Classes, Controls, ComCtrls;
type
  TMediaTrackBar = class(TTrackBar)
  private
    FMouseDown: Boolean;
    FOnUserChange: TNotifyEvent;
  protected
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); override;
    procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); override;
    procedure Changed;override;  
  public
    constructor Create(AOwner: TComponent);override;
  published
    property OnUserChange: TNotifyEvent read FOnUserChange write FOnUserChange;
  end;
procedure Register;
implementation
procedure Register;
begin
  RegisterComponents('Samples', [TMediaTrackBar]);
end;
{ TMediaTrackBar }
procedure TMediaTrackBar.Changed;
begin
  if FMouseDown then
  begin
    if Assigned(FOnUserChange) then
      FOnUserChange(Self);
  end;
  inherited Changed;
end;
constructor TMediaTrackBar.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FMouseDown:=False;
end;
procedure TMediaTrackBar.MouseDown(Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  FMouseDown:=True;
  inherited MouseDown(Button,Shift,X,Y);
end;
procedure TMediaTrackBar.MouseUp(Button: TMouseButton; Shift: TShiftState;
  X, Y: Integer);
begin
  FMouseDown:=False;
  inherited MouseUp(Button,Shift,X,Y);
end;
end. 
 P.S готовый компонент для Delphi 7