我正在制作一个基本的音乐播放器,并使用TTrackBar作为歌曲的进度。还有,我想让它,以便您可以拖动酒吧和快进的歌曲。
目前,我有一个包含以下代码行的OnChange事件:
MediaPlayer1.position := TrackBar1.value... (with proper casting)但发生的情况是,它跳过了这首歌,因为我拖着它,在播放这首歌的过程中,它会在某个随机的点上发出一种颠簸的声音。
我真正想要的是当用户停止拖动时,歌曲应该改变。这是什么活动?onStopDrop甚至不能做到这一点..
发布于 2014-06-06 17:34:58
滚动通知消息通过WM_HSCROLL或WM_VSCROLL到达,具体取决于轨迹栏的方向。这些表面在VCL控件中表现为CN_HSCROLL和CN_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;https://stackoverflow.com/questions/24073183
复制相似问题