河南 蔣云麗
計時器(TIMER)控件在VB編程中的應(yīng)用
河南 蔣云麗
我們知道計時器控件的作用是定時產(chǎn)生一個時鐘(timer)事件,利用這個事件可以定期地做一些程序處理。用戶可以自行設(shè)置每個計時器的時間間隔(Interal)。在實踐教學(xué)中,Timer事件有很廣的應(yīng)用,比如實現(xiàn)動畫的制作、實現(xiàn)循環(huán)結(jié)構(gòu)的程序設(shè)計。
Interval屬性;Timer事件
VisualBasic中計時器(timer)控件用于前景進程中,它是不可見。通過它的Timer事件可以控制A程序有規(guī)律地每隔一段時間執(zhí)行一次代碼。
Interval屬性:該屬性用來設(shè)置計時器事件之間的間隔,以毫秒為單位,其取值范圍為0~65 536毫秒,因此最大的時間間隔不能超過65秒。60 000毫秒為1分鐘,如果把Interval屬性值設(shè)為1 000,則表明每秒鐘發(fā)生一個計時器事件;如果希望每秒產(chǎn)生n個事件,則Interval屬性的值設(shè)置為l 000/n。
Timer事件:是VB模擬實時計時器的事件。使用計時器控件的操作步驟:
(1)設(shè)置Timer控件的Interval屬性值,這個屬性決定了產(chǎn)生定時事件的時間間隔。該屬性的單位是千分之一秒。例如,把:Interval屬性設(shè)置為500,則計時器將每隔0.5秒將產(chǎn)生一次Timer事件。
(2)編寫響應(yīng)計時器的Timer事件的事件過程,即在事件過程中編寫需要定時執(zhí)行的代碼,完成各種定時任務(wù)。
(3)通過設(shè)置計時器控件的Enabled屬性為True或False來打開或關(guān)閉Timer事件的產(chǎn)生。
例如:利用計時器的Timer事件移動標(biāo)簽控件在窗體上的位置,以生成滾動文字效果。(如下圖)
設(shè)計步聚:
1.填加Timer圖標(biāo),將其Interval屬性設(shè)為30;
2.填加Frame1圖標(biāo),將Caption屬性設(shè)為“白日依山盡,黃河入海流,欲窮千里目,更上一層樓”;
3.垂直滾動條,將其MAX屬性設(shè)為30,MIN屬性設(shè)為10,SmallCHange屬性設(shè)置為1,largechange屬性設(shè)為2;
4.代碼如下:
大家都知道VisualBasic中有專用的循環(huán)語句,但是利用IF語句和Timer事件的結(jié)合也可以很好地實現(xiàn)循環(huán)結(jié)構(gòu)的編程。利用Timer事件實現(xiàn)循環(huán)應(yīng)注意以下問題:
首先,要用Static定義靜態(tài)變量。不能用Dim定義動態(tài)變量,否則每循環(huán)一次,變量又被重新定義,它以前的值會被拋棄。而用Static定義成靜態(tài)變量的話,它會存儲上一次循環(huán)后變量的值。
其次,用If語句循環(huán),不要給變量賦初值。否則每循環(huán)一次,變量又被重新設(shè)置為初值了。
我們就以下面這段“在按鈕上顯示點擊的次數(shù)”的代碼為例來說明。
Static Counts As Integer是用Static定義一個靜態(tài)變量來存儲已經(jīng)點擊的次數(shù)。Counts=Counts+1,每點擊一次,變量值加1,大家已經(jīng)注意到,這里并沒有給Counts賦初值。你單擊了幾次,Counts的值就是幾。
最后,如果If循環(huán)過程中不需要用戶干預(yù),須用Timer來實現(xiàn)循環(huán)。上面的例子的每一次循環(huán)都是用戶點擊而進行的,如果循環(huán)次數(shù)比較多,中途又不能直接干預(yù)的話,就得用Timer定時器控件來實現(xiàn)。
例如計算“1^2+2^2+...+10^2的值”,這個程序就要求循環(huán)10次,如果用前面的方法來實現(xiàn)的話,那得點擊按鈕10次,實在太麻煩,況且,如果要循環(huán)百次千次這樣多的次數(shù),總不可能手動點擊那么多次。用Timer定時器控件的話,可以讓定時器每間隔一定時間自動執(zhí)行一次代碼,當(dāng)達到循環(huán)次數(shù)時,使定時器停止。
在窗體上添加一個Command按鈕和一個Timer定時器。先在窗體的Form_Load()事件中設(shè)置Timer定時器的Enabled屬性為False,Interval屬性為100毫秒。
然后在Command1_Click()事件中寫下Timer1.Enabled=True,這樣,當(dāng)點擊按鈕時,Timer定時器才啟動。
最后一步,在Timer1_Timer()事件中用If語句來設(shè)置循環(huán)條件是關(guān)鍵,請看下面的代碼:
來分析一下這段代碼,Static Sum As Integer,n As Integer定義兩個靜態(tài)變量Sum和n,Sum用于存放總和。下面仍然沒有為Sum和n賦初值,直接用n=n+1使定時器每運行一次,n的值就加1。后面的if語句是循環(huán)條件,如果n的值沒超過10,就繼續(xù)運算,否則就使定時器停止,并且在窗體上顯示出運算結(jié)果。
[1]Visual Basic6.0程序設(shè)計.電子工業(yè)出版社,2010年.
[2]Visual Basic6.0程序設(shè)計教程.清華大學(xué)出版社,2000年.
(作者單位:河南省鄭州機電工程學(xué)校)
(編輯 王旸)