MediaPlayer1.Position=TrackBar1.Position,
这一句应该放在Trackbar1的那个事件里呢?
为什么我放在任何一个事件里都不触发!
是不是需要对trackbar的属性进行设置?

解决方案 »

  1.   

    放在onchange事件里播放的声音断断续续,按照别的一些提示:MediaPlayer1.Position=TrackBar1.Position*1000,可拖动滑块却失去了作用!
      

  2.   

    拖动的时候在 onchange事件里判断如果MediaPlayer1现在的position-MediaPlayer1拖动前的position>5(自设定值),则先暂停,然后把MediaPlay的position赋值为新的TrackBar的位置,然后play
      

  3.   

    if (Trackbar1.position-MediaPlayer1.position)>5 then
    begin
         MediaPlayer.Pause;
         MediaPlayer.Position:=Trackbar1.Position;
         MediaPlayer.Play;
    end;
    是这样吧,基本能达到要求,可是在拖动的时候有轻微的不和谐音。还可以再改善吗?
      

  4.   

    而且TrackBar只支持往前拖,不支持往前后拖, 我说的前后是声音的前后,也就是说声音只往前播放,不能往后回放!
      

  5.   

    如果不用以下语句:
    if (Trackbar1.position-MediaPlayer1.position)>5 then
    begin
         MediaPlayer.Pause;
         MediaPlayer.Position:=Trackbar1.Position;
         MediaPlayer.Play;
    end;
    可以将声音往后拖,但是声音断断续续
      

  6.   

    自做控件..
    很容易的. 
    做一个从 TTrackBar 类继承。
    再把 OnMouseDown、OnMouseMove、OnMouseUp (在 TControl 已经定义为 protected 形式) 加在自定义控件的 published 语句后即可。unit CM_TrackBar_Unit;interfaceuses
      Classes, ComCtrls;type
      TCM_TrackBar = class(TTrackBar) //从 TTrackBar 类继承
      protected
      public             
      published
        property OnMouseDown;   //声明 OnMouseDown
        property OnMouseMove;   //声明 OnMouseMove
        property OnMouseUp;     //声明 OnMouseUp
      end;procedure Register;implementationprocedure Register;
    begin
         RegisterComponents('Win32', [TCM_TrackBar]) //安装到 [Win32] 页中
    end;end.控件的安装应该知道了吧。 如果不知道,再给我留言。下一步,在程序中加入 TCM_TrackBar 控件。
    在 OnMouseDown 事件中加入语句处理;(如:
         Self.CM_TrackBar1.OnChange := NIL;
    )。
    再在 OnMouseUp 事件中加入语句处理;(如:
         Self.CM_TrackBar1.OnChange := Self.CM_TrackBar1Change;
         Self.CM_TrackBar1Change(Self.CM_TrackBar1);
    )。就这样搞定。很容易的。如果还不理解。可留言。也可 E-mail: [email protected]
      

  7.   

    用上面的方法,根本就不要用到
    MediaPlayer.Pause;
    并且可以很自由的向前向后。
    十分方便
      

  8.   

    呵呵,就用 cmain83(龙行天下2008)就可以了