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