Delphi TrackBar On Stop

时间:2014-06-06 02:20:41

标签: delphi media-player trackbar

我正在制作一个基本的音乐播放器并使用TTrackBar作为歌曲的进展。我也想做到这一点,你可以拖动酒吧并快进歌曲。

目前我有一个OnChange事件,其中包含以下行:

MediaPlayer1.position := TrackBar1.value... (with proper casting)

但是,当我在沿途的某些随机点播放歌曲时,我拖动发出一声不稳定的声音,它会跳过这首歌。

我真正想要的是当用户停止拖动歌曲应该改变时。这是什么事? onStopDrop甚至没有做到这一点..

1 个答案:

答案 0 :(得分:2)

滚动通知消息会通过WM_HSCROLLWM_VSCROLL到达,具体取决于跟踪栏的方向。这些在VCL控件中显示为CN_HSCROLLCN_VSCROLL。您需要处理这些消息并忽略滚动代码为TB_THUMBTRACK的消息,以防止控件在用户拖动滑块时触发OnChange事件。

例如,这是一个内插器控件,它可以满足你的需要:

type
  TTrackBar = class(Vcl.ComCtrls.TTrackBar)
  protected
    procedure CNHScroll(var Message: TWMHScroll); message CN_HSCROLL;
    procedure CNVScroll(var Message: TWMVScroll); message CN_VSCROLL;
  end;

implementation

procedure TTrackBar.CNHScroll(var Message: TWMHScroll);
begin
  if Message.ScrollCode = TB_THUMBTRACK then
    Message.Result := 0
  else
    inherited;
end;

procedure TTrackBar.CNVScroll(var Message: TWMVScroll);
begin
  if Message.ScrollCode = TB_THUMBTRACK then
    Message.Result := 0
  else
    inherited;
end;