一个怪问题!(30分)

  • 主题发起人 主题发起人 peterwang
  • 开始时间 开始时间
P

peterwang

Unregistered / Unconfirmed
GUEST, unregistred user!
我在form上放一个label,一个programbar,一个button,希望在按下
button时,label先显示一行字,然后programbar再前进,但如下代码
的结果是:programbar完了以后,label才显示,真怪!
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
label1.Caption:='show some information!';
i:=0;
while i<=100do
begin
i=i+1;
end;
end;
 
sorry ! programbar 应为 progress bar 控件
 
最后是不是还要加上progress1.value=i呀?
form有个方法,好像是Update或Refresh之类,将
它插在i之前,大概能解决吧。
 
这个问题用线程解决
系统时钟占用,不会刷新Label
不过也可以试试invalidate
 
//easy,改成这样就行了
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
label1.Caption:='show some information!';
application.ProcessMessages;
i:=0;
while i<=1000do
begin
i:=i+1;
progressbar1.Position:=i;
end;
end;
 
谢谢hubdog,问题解决。
另外,还有一个问题,就是我想家一个button,点击时能
在循环中中断本次循环,不知如何实现,好象在循环时
不响应另外button的。
 
呵呵,原理一样,在你的循环里面加上application.ProcessMessages;一句话就可以了
 
application.ProcessMessages 应该放在While循环中.
可以参看第二消息循环的使用,Windows Api中好像有.
application.ProcessMessages的作用是让其他的窗口可以响应消息.
Button在Windows的概念中也是窗口.你的做法可以实现中断.
 
哇,这个
application.ProcessMessages
是什么呀,这么神奇?真的搞掂了!
 
谢谢谢谢
 
后退
顶部