GIF动画图片问题 ( 积分: 50 )

  • 主题发起人 主题发起人 jhlz1968
  • 开始时间 开始时间
J

jhlz1968

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个无边框的提示窗体(form),用来提示让用户等待,上边放了一个GIF动画,一个timer组件,用来判断主表单上的数据是否更新完毕,如果更新完毕就关掉提示窗体。但当主表单调用提示窗体时,上边的GIF动画是静止的,不是动态的。而当我单独运行提示窗体时,GIF是动态的。

代码(form5是提示窗体):
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
Form5.Show;
Form5.Refresh;
...........
end;
该怎样解决?
 
你用什么显示gif图? 如果是gifimage那就对了
因为gifimage显示动画是通过线程消息的
当你执行刷新的时候消息队列会被占满,gifimage的消息无法传递出去,自然就无法实现动画效果了

你可以自己试试新放个form,然后仍个gif动画在上面,然后放个button写
var
i:integer;
begin
for i:=0 to 9999 do
self.caption:=inttostr(i);
end;
这样gif动画也不会动,但是如果你这样写
var
i:integer;
begin
for i:=0 to 9999 do
begin
self.caption:=inttostr(i);
application.ProcessMessages;
end;
end;
gif就可以动了
 
application.ProcessMessages;
是关键,但是用GIF毕竟占资源
 
TO:hs-kill
我是用gifimage来显示图片的。
如果GIF放在主表单,不用写任何代码,只要运行表单它就会动。
但现在GIF是放在提示表单上的,也就是当主表单获取数据时,才调出提示表单提示用户等待。
另外提示表单是个无边框的表单,上边有个timer组件,用来检测主表单上的一个Edit的值是否为空,如果不为空,则关闭提示表单。
procedure TForm5.Timer1Timer(Sender: TObject);
begin
if Form1.Edit3.Text<>'' then
Form5.Close;
end;
 
那你运行提示表单的时候,程序会不会是繁忙无响应状态?比如正在读取数据库或者循环显示数据之类的
gif图片不动,和哪个窗体没关系
 
TO:hs-kill
是的。如果网速快的话,不会出现无响应状态。如果网速慢的话,会出现无响应状态,但只要等一会,程序依然会运行,也就是说数据依然会刷新。
 
我的意思是....在程序无响应的时候,gif图片是不会动的

你可以试试,在不刷新的情况下,将那个窗体显示出来,gif图会动吗?
 
如果不刷新,提示窗体会显示出来,但上边的Label和GIF都不显示
 
-_- 你为了测试,不刷新的时候也让他们显示出来,看会不会动,如果动,那就是因为刷新时程序无响应造成的,如果不动,那就是你那个窗体的问题
 
不刷新,表单能显示出来,但上边的组件一个也显示不出来
 
算了,结贴了[:)]
 
后退
顶部