在研究類這塊,有個小例子對我的協助特別大。在這裡跟大家分享一下。
本例中,主要講的百米賽跑中的計時。
下面是TimerTask類別模組中代碼:
Option ExplicitPublic Event UpdateTime(ByVal dblJump As Double)Public Event ChangeText()Public Sub TimerTask(ByVal Duration As Double) Dim dblStart As Double Dim dblSecond As Double Dim dblSoFar As Double dblStart = Timer 'Timer類 提供以指定的時間間隔執行方法的機制,此類不能被繼承。 '返回一個 Single,代表從午夜開始到現在經過的秒數。 'Microsoft Windows中,Timer函數返回一秒的小數部分。 dblSoFar = dblStart Do While Timer < dblStart + Duration '當某一時刻的秒數小於開始時間+停留時間 If Timer - dblSoFar >= 1 Then '設定遞增秒數 dblSoFar = dblSoFar + 1 RaiseEvent UpdateTime(Timer - dblStart) '呼叫事件UpdateTimer更新經過的時間秒數 End If Loop RaiseEvent ChangeText '調用ChangeText事件。End Sub
在這個類中,定義了UpdateTime和ChangeText兩個事件,主要定義了TimerTask過程,該過程是程式的核心,由於是百米賽跑,對時間的要求較高。它精確能夠比較精確的取得了時間。
接下來是表單中,執行個體化過程和調用過程:
Option ExplicitPrivate WithEvents mText As TimerState '執行個體化TimerState這個類Private Sub Command1_Click() Text1.Text = "From Now" Text1.Refresh Text2.Text = "0" Text2.Refresh '此處不重新整理,該文字框不會顯示0 Call mText.TimerTask(9.84) '調用mText表單的TimerTask事件程序(其傳回值設定為9.84)End SubPrivate Sub Form_Load() Command1.Caption = "Click to Start Timer" Text1.Text = "" Text2.Text = "" Label1.Caption = "The fastest 100 meter run took this long:" Set mText = New TimerState End SubPrivate Sub mText_ChangeText() Text1.Text = "Until Now" Text2.Text = "9.84" 'Text2.Text = "11"End SubPrivate Sub mText_UpdateTime(ByVal dblJump As Double) Text2.Text = Str(Format(dblJump, "0")) DoEvents ' 將控制讓給其他程式。End Sub
執行之後的結果:
看懂上面的類,其他的也沒有什麼難度,很容易看懂。不過類的思想,事件的定義和調用是我們應該重點掌握的。從簡單做起,慢慢理解。