在建立窗體,引導用戶使用的過程中,經常會遇到這樣的問題:有時候用戶按下某個命令按鈕,當程序開始執行那個按鈕所關聯的程序時,由於涉及到大量的計算工作,所以電腦運行會變慢,在Access中會表現為屏幕沒有任何反應,時間稍長,就會讓人感覺是不是死機了?所以,在這種情況下,如果有提示框來告訴用戶電腦此時在做什麼會比較好,另外這樣也可以感覺時間短些,因為沒有任何變化的等待會讓人感覺更加漫長!
要完成這個即時信息顯示窗口,我們首先想到的就是在程序的某一部分加上一段代碼,這段代碼打開一個新的窗口,窗口中會有相關文字,如“程序正在運行,請稍等……”等等,代碼也很簡單,在Access中就是
……
DoCmd.OpenForm "wait"
Forms!Wait!lblwait.Caption = "程序正在運行,請稍等……"
……
其中,wait是窗體(Form)的名字,lblwait是窗體中的一個標簽(Label)控件的名稱,程序運行到省略號這裡時,會打開wait窗口,然後把標簽控件的名稱改為“程序正在運行,請稍等……”。
可是當你真正運行這段程序代碼時,會發現效果並不是你想象的那樣,wait窗口確實出來了,但是上面只是一片白色區域,沒有任何文字,最初你可能覺得是自己的電腦運行慢,顯示不出來,但是即使你換到最快的電腦上來運行,結果還會是這樣,豈不郁悶?!
這個時候,就輪到Repaint方法大顯身手了,將上面的代碼稍作修改,如下面這樣:
……
DoCmd.OpenForm "wait"
Forms!Wait!lblwait.Caption = "程序正在運行,請稍等……"
Forms!Wait.Repaint
……
再運行一下,就可以看到窗口正常顯示出來提示了。
之後,你可以在需要的地方都加上這段代碼,把其中的文字換換,就可以在程序的運行過程當中實時提示用戶程序在做什麼了!
道理其實也很簡單,就是在程序運行過程當中,不會實時的更新屏幕顯示,這樣會加快程序運行的速度,所以在設計到大量計算時,程序就不會有任何顯示更新,像死機了一樣,但是加入了Repaint方法就會強制更新屏幕顯示,就會讓我們動態看到程序運行狀況了。