2014-06-06 92 views
0

我正在製作一個基本的音樂播放器,並且正在使用TTrackBar作爲歌曲的進度。以及我想讓它可以讓你拖動酒吧並快速播放歌曲。Delphi TrackBar On Stop

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

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

,但發生的事情是,它跳過一起爲我拖累製作波濤洶涌的聲音,因爲它起着沿着一定的隨機點這首歌的歌辦法。

我真正想要的是當用戶停止拖動歌曲時應該改變。這是什麼事? onStopDrop甚至沒有辦法。

回答

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; 
+1

爲編輯@TLama謝謝 –