用TrackBar动态控制Timer的频率 ( 积分: 100 )

  • 主题发起人 主题发起人 realwizard
  • 开始时间 开始时间
R

realwizard

Unregistered / Unconfirmed
GUEST, unregistred user!
时钟用于控制数字累加的速度,trackbar动态调整timer的频率,但是在trackbar的滑块滑动的过程中(在他的change事件中更改时钟的interval),时钟停止跳动(可以看到数字暂停累加了),滑块停止移动后,时钟又开始跳动(时钟的interval已更改,数字开始以更改后的速度累加)。我要达到的效果是trackbar的滑块滑动过程中数字累加不能停,并且要实时更改累加速度。我想应该用多线程,我不明白应该把timer的ontimer事件作为主线程还是把trackbar的chang事件作为主线程。 或者应该用其他方法,请各位高手指教。
 
没说清楚,“trackbar滑动的时候,timer停止跳动” ?
能把示例代码贴出来吗
 
有三个label,lable1 用来显示累加的数字,label2显示滑动条的位置,label3显示时钟的interval值
//滑动条事件
procedure TForm1.MyTrackBar1Changing(Sender: TObject;
NewPos: Integer;
var AllowChange: Boolean);
var
time:integer;
begin
label2.Caption := inttostr(NewPos);
//滑动条的位置
time := 10*NewPos;
Timer1.Interval := time;
//改变timer的interval
Label3.Caption := IntToStr(Timer1.Interval);
//timer的interval值
end;
//时钟事件,控制label1的变化
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if i<1000 then
begin
i:= i+1;
label1.Caption := inttostr(i);
//改变的数字
end;
end;
当滑动条滑动时,label2改变,label3改变,label1不变,可以看出来滑动条变化时,timer的interval是实时变化的,但时钟好像是暂停跳动了,label1并不变化,当滑动条停止时,label1才开始变化。
问题是:怎样让label1在滑动条滑动时也能实时变化.
备注:我觉得是在滑动条滑动过程中时钟这个线程被挂起,所以时钟不跳了,在滑动条停止时,时钟线程又开始运行。怎样让他们协调运行以达到我要的效果呢?
 
后退
顶部