河南 蔣云麗
計時器(TIMER)控件在VB編程中的應用
河南 蔣云麗
我們知道計時器控件的作用是定時產生一個時鐘(timer)事件,利用這個事件可以定期地做一些程序處理。用戶可以自行設置每個計時器的時間間隔(Interal)。在實踐教學中,Timer事件有很廣的應用,比如實現動畫的制作、實現循環結構的程序設計。
Interval屬性;Timer事件
VisualBasic中計時器(timer)控件用于前景進程中,它是不可見。通過它的Timer事件可以控制A程序有規律地每隔一段時間執行一次代碼。
Interval屬性:該屬性用來設置計時器事件之間的間隔,以毫秒為單位,其取值范圍為0~65 536毫秒,因此最大的時間間隔不能超過65秒。60 000毫秒為1分鐘,如果把Interval屬性值設為1 000,則表明每秒鐘發生一個計時器事件;如果希望每秒產生n個事件,則Interval屬性的值設置為l 000/n。
Timer事件:是VB模擬實時計時器的事件。使用計時器控件的操作步驟:
(1)設置Timer控件的Interval屬性值,這個屬性決定了產生定時事件的時間間隔。該屬性的單位是千分之一秒。例如,把:Interval屬性設置為500,則計時器將每隔0.5秒將產生一次Timer事件。
(2)編寫響應計時器的Timer事件的事件過程,即在事件過程中編寫需要定時執行的代碼,完成各種定時任務。
(3)通過設置計時器控件的Enabled屬性為True或False來打開或關閉Timer事件的產生。
例如:利用計時器的Timer事件移動標簽控件在窗體上的位置,以生成滾動文字效果。(如下圖)

設計步聚:
1.填加Timer圖標,將其Interval屬性設為30;
2.填加Frame1圖標,將Caption屬性設為“白日依山盡,黃河入海流,欲窮千里目,更上一層樓”;
3.垂直滾動條,將其MAX屬性設為30,MIN屬性設為10,SmallCHange屬性設置為1,largechange屬性設為2;
4.代碼如下:

大家都知道VisualBasic中有專用的循環語句,但是利用IF語句和Timer事件的結合也可以很好地實現循環結構的編程。利用Timer事件實現循環應注意以下問題:
首先,要用Static定義靜態變量。不能用Dim定義動態變量,否則每循環一次,變量又被重新定義,它以前的值會被拋棄。而用Static定義成靜態變量的話,它會存儲上一次循環后變量的值。
其次,用If語句循環,不要給變量賦初值。否則每循環一次,變量又被重新設置為初值了。
我們就以下面這段“在按鈕上顯示點擊的次數”的代碼為例來說明。

Static Counts As Integer是用Static定義一個靜態變量來存儲已經點擊的次數。Counts=Counts+1,每點擊一次,變量值加1,大家已經注意到,這里并沒有給Counts賦初值。你單擊了幾次,Counts的值就是幾。
最后,如果If循環過程中不需要用戶干預,須用Timer來實現循環。上面的例子的每一次循環都是用戶點擊而進行的,如果循環次數比較多,中途又不能直接干預的話,就得用Timer定時器控件來實現。
例如計算“1^2+2^2+...+10^2的值”,這個程序就要求循環10次,如果用前面的方法來實現的話,那得點擊按鈕10次,實在太麻煩,況且,如果要循環百次千次這樣多的次數,總不可能手動點擊那么多次。用Timer定時器控件的話,可以讓定時器每間隔一定時間自動執行一次代碼,當達到循環次數時,使定時器停止。
在窗體上添加一個Command按鈕和一個Timer定時器。先在窗體的Form_Load()事件中設置Timer定時器的Enabled屬性為False,Interval屬性為100毫秒。
然后在Command1_Click()事件中寫下Timer1.Enabled=True,這樣,當點擊按鈕時,Timer定時器才啟動。
最后一步,在Timer1_Timer()事件中用If語句來設置循環條件是關鍵,請看下面的代碼:

來分析一下這段代碼,Static Sum As Integer,n As Integer定義兩個靜態變量Sum和n,Sum用于存放總和。下面仍然沒有為Sum和n賦初值,直接用n=n+1使定時器每運行一次,n的值就加1。后面的if語句是循環條件,如果n的值沒超過10,就繼續運算,否則就使定時器停止,并且在窗體上顯示出運算結果。
[1]Visual Basic6.0程序設計.電子工業出版社,2010年.
[2]Visual Basic6.0程序設計教程.清華大學出版社,2000年.
(作者單位:河南省鄭州機電工程學校)
(編輯 王旸)