怎样同步TrackBar的滑块?(200分)

  • 主题发起人 主题发起人 yardy
  • 开始时间 开始时间
Y

yardy

Unregistered / Unconfirmed
GUEST, unregistred user!
在我的程序中,我使用了一个Timer控件来控制滑块的移动,我使用了TrackBarChange过程,在其中加入了:
mediaplayer1.position:=trackbar1.position*ChangeInt;
{ ChangeInt 是我设的一个转换变量 }
Timer控件中有这样一个语句:
TrackBar1.position:=mediaplayer1.position div ChangeInt;
但当我执行程序时,图像总是断续,间隔为的Timer控件的Interval值。
造成图像断续的原因就是上面的两个语句对媒体数据的操作不同步,我的问题是:怎样使它们同步呢?

 
一般这种程序用线程比较好,用Timer权限可能太高。
〉〉mediaplayer1.position:=trackbar1.position*ChangeInt;
此句没必要吧?
当你TrackBar1.position:=mediaplayer1.position div ChangeInt;
后又触发了TrackBarChange事件,重新Seek必然会导致闪动


 
Timer控件中的语句 又 触发 TrackBarChange

应该
trackbar.OnTrackBarChange:=nil
try
TrackBar1.position:=mediaplayer1.position div ChangeInt;
finally
trackbar.OnTrackBarChange:=trackbarTrackBarChange
end
 
试试这样
FUNCTION TFORM.MEDIAPLAYERISOPENED(VAR MEDIA:MEDIAPLAYER):BOOLEAN;
begin

WITH MEDIAdo

begin

if (mode=mpopen) or (mode=mppaused) or (mode=mpstopped) or
(mode=mprecording) or (mode=mpplaying )then

result:=true
else

result:=false;
end;

end;

--------------
使用TIMER的触发事件
IF MEDIAPLAYERISOPENED(MEDIAPLAYER) then

BETN
TRACKER.ONTRACKBARCHANGE:=NIL;
TRACKER.MIN:=0;
TRACKER.MAX:=MEDIAPLAYER.LENGTH;
TRACKER.POSITION:=MEDIAPLAYER.POSITION;
TRACKER.ONTRACKBARCHANGE:=TRACKBARCHANGE;

end;

当然在TRACKBARCHANGE中也应该使用MEDIAPLAYERISOPENED判断以下再改变
MEDIAPLAYER.POSITION 属性
-------
在是我凭空想象的,成功了告诉我以下 ^_^ ,祝你好运!
 
我已经想到了一个办法,虽然不是很高深,但是效果相当好,完全没问题。
谢谢大家的帮助!
 
Timer定时监控滑块的移动,所以设一个变量,如果此变量大于在Timer定时范围内滑块的移动量作拖动处理,小于等于时则使这种移动的负效应消失。
 
干嘛一定要用TrackBarChange事件呢?这样Timer的事件又触发了TrackBarChange
事件,当然会出现问题。
可以完全不用TrackBarChange事件。
用TrackBar的Clike事件不是很好么?
 
tarackbar.max:=mediaplayer.length;
tackbar的onmousedown事件中:
timer.enabled:=false;
tackbar的onmouseup事件中:
 mediaplayer.position:=trackbar.position;
timer.enabled:=true;
ontimer事件中:
trackbar.position:=mediaplayer.position;
OK!?
 
快3个月了,问题还没结束,哈哈,是不是要再等几个月啊?
 
我给你发去吧,满意的话记得给我加分哟!
 
接受答案了.
 
blackangel, yardy:
请把你们的解决办法给我发一份好吗?
thanks.
 
to blackangel:
  能给我一份吗?
xxz007@yeah.net
 
blackangel, yardy:
请把你们的解决办法给我发一份好吗?
thanks.
cy@mail.eq-sd.ac.cn
 
blackangel, yardy:
可以给我发一份吗? thanks.
chenbing@freemail.sx.cn
 
你们收到了吗?我怎么还没收到!
 
后退
顶部