老大们,为什么俺的TAnimate里的动画就是不动呢?快救救俺吧

tttk 2004-05-09 09:12:27
我在ProgressForm上放了一个TAnimate组件Animate,然后指定Animate.filename到当前目录下的101.avi文件。在Form.Create事件中,指定Animate.Activate:=True。

ProgressForm俺是这样调用的:
ProgressForm := TProgress.Create(Self);
ProgressForm.Show;

//接着调用ProgressForm中的方法
ProgressForm.methord1;
....

注:methord1方法在执行时动态的改变表单上的lable控件的标题。

好了,lable标题倒是不停的变化,但是我的Animate为什么动也不动呢?

我做了个试验:把ProgressForm.Show行下面代码注释调,只让表单显示出来,好了,动画开始动了。

真是太奇怪了,各位高手,一定要帮忙解决。50分送上。
...全文
97 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tttk 2004-05-10
  • 打赏
  • 举报
回复
可是如果我不点击按钮运行代码,动画就一直在动。没有什么因素导致Animate停止啊,只是似乎它没有得到CPU时间执行而已。
jie115 2004-05-10
  • 打赏
  • 举报
回复
这个控件使用比较简单,如果你那里有错误,检查以后没有发现明显错误。那不是你的问题啦。。
viaboy 2004-05-10
  • 打赏
  • 举报
回复
help u up
xjb7505005 2004-05-10
  • 打赏
  • 举报
回复
Application.ProcessMessages 这句话相当VB的DoEvents。如果你运行一个非常耗时的循环,那么在这个循环结束前,你的程序可能不会响应任何事件,你按按钮没有反应,程序设置无法绘制窗体,看上去就如同死了一样,这有时不是很方便,例如于终止循环的机会都没有了。这时你就可以在循环中加上这么一句,每次程序运行到这句时,程序就会让系统响应一下消息,从而使你有机会按按钮,窗体有机会绘制。
楚人无衣 2004-05-10
  • 打赏
  • 举报
回复
奇怪啊,我用你的方法,设methord1为一个长循环,甚至加入了Sleep方法,其TAnimate一样可以动态显示动画;检查一下是否在那个方法没到执行完毕就停止了动画,再不行就用你的Application.ProcessMessages吧,它要占用很多的cpu时间
codemoocow 2004-05-10
  • 打赏
  • 举报
回复
在循环中加入Self.Update或Application.ProcessMessages
aiirii 2004-05-10
  • 打赏
  • 举报
回复
應該是你代碼有問題,檢查有沒有那裹停止了Animate
tttk 2004-05-10
  • 打赏
  • 举报
回复
谢谢诸位,我想还是加几个消息处理语句吧,我用的是XP系统,Delphi7,在两台电脑上测试都是一样的结果。我在按钮中加的一个两重循环,用来刷新表单上的lable控件。一点击按钮,动画就不动了,除非加入事件处理。没招了。

楼上的说一点问题没有,真的让人羡慕。
tttk 2004-05-09
  • 打赏
  • 举报
回复
这个问题很难吗?一个人也不会?
tttk 2004-05-09
  • 打赏
  • 举报
回复
methord1的代码比较复杂,主要是数据库的查询和更新操作,其中有一些循环。

俺刚才试了一下,如果在这些代码中(尤其是循环)中插入Application.ProcessMessages的话,动画就动起来了。但插入的这些处理事件的代码无疑是累赘和麻烦的事。

能不能有某种方法,能够让TAnimate从CPU处抢到时间来执行。Delphi的帮助上说TAnimate是单线程执行的。
江宁侯哥 2004-05-09
  • 打赏
  • 举报
回复
你把methord1代码贴出来看看

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧