德尔福的TrackBar在停止(Delphi TrackBar On Stop)

2019-10-20 06:01发布

我想提出一个基本的音乐播放器和正在使用TTrackBar作为歌曲的进展情况。 还有我想使它这样你们可以拖动滑块和快进歌曲。

目前,我有以下行的OnChange事件:

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

但发生的事情是,它跳过一起,因为它起着沿途某些随机点的歌曲作为我拖累制作波涛汹涌的声音的歌曲。

我真正想要的是当用户停止拖动首歌应该改变。 什么情况下这是什么? 该onStopDrop甚至不会做的伎俩..

Answer 1:

滚动通知邮件到达时,虽然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;


文章来源: Delphi TrackBar On Stop