2012-09-27 80 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) –