2012-09-27 82 views
2

我有一段代码:加载前刷新标签标题?

setEnableControls(false); 
lblLoading.Caption:='Loading tree contents, please wait.'; 
someBigLoading(); 
setEnableControls(true); 
lblLoading.Caption:=''; 

问题是,标签的标题文字不会刷新,直到之后的“大负荷”就完成了。 有没有办法让程序在消息队列中处理消息,然后才能进入下一个命令?

回答

8

只需致电lblLoading.Update即可。这将更新标签并且不会引入任何可能在代码中间处理消息时引发的问题。

+2

+1 - 这是正确的解决方案 – whosrdaddy

+0

这两个工作正常,但你能解释为什么processmessages()有问题吗?此外,属性TForm.doublebuffered在此扮演什么角色? – programstinator

+2

@Goran_Mandic避免Application.ProcessMessages();只要有可能,因为[通常会导致重入问题](http://delphi.about.com/od/objectpascalide/a/delphi-processmessages-dark-side.htm) –