Ćwiczenie VB5.1_Stoper_Timer
Zbudujmy aplikację pozwalającą odliczać czas, z dokładnością do 1/100 sekundy, z
możliwością uchwycenia tzw. międzyczasu. Formularz może mieć postać jak na rys.1.
Rys. 1. Propozycja formularza z obiektem Timer
Obiekt Timer nie posiada właściwości „Widoczny” widzimy go jedynie w stanie
projektowania aplikacji, a nie jest widoczny podczas działania aplikacji. Próba umieszczenie
go na formularzu kończy się tym, że nie pojawia się on na właściwym formularzu lecz na dole
okna projektowania, na dodatkowym pasku przeznaczonym do przechowywania obiektów
niewidocznych.
Jako obiekt odliczając czas wykorzystamy obiekt Timer znajdujący się na pasku Toolbox
w zakładce Components. Obiekt Timer jest bardzo ubogi we właściwości, patrz rys. 1, okno
Properties, ma także bardzo krótką listę zdarzeń, patrz rys. 2.
Rys. 2. Lista zdarzeń obiektu Timer
Jeśli Timer jest aktywny (właściwość Enabled = True) wtedy, co przedział czasu określony
wartością właściwości Interval wyrażonej w milisekundach generuje zdarzenie Tick i
aplikacja uruchamia procedurę obsługi tego zdarzenia.
Np. Interval = 10, oznacza, że co 10/1000 sekundy, czyli 1/100 sekundy pojawi się zdarzenie
Tick.
Aby uzyskać stoper odmierzający czas z dokładnością do 1/100 sekundy ustawimy wartość
właściwości Interval na 100. Na każde zdarzenie Tick licznik zliczający setne części sekund
będziemy zwiększać o 1, a następnie ogólną liczbę setnych części sekundy zamienimy na
Copyright © 2009 Janusz Bonarowski
1
godziny, mi nuty, sekundy i setne części sekundy wyświetlając wynik w oknie tekstowym
txtEkran.
Stoper można zatrzymywać i uruchamiać ponownie przyciskiem Start/Stop.
Kod aplikacji
Dim Licznik As Integer
'Integer: -2,147,483,648 through 2,147,483,647 (signed)
'wyświetlimy max 99 godz. = 356 400 000 ms
Private Sub btnStart_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnStart.Click
If btnStart.Text = "Start" Then
btnStart.Text = "Stop"
tmrTimer1.Enabled = True
Else
btnStart.Text = "Start"
tmrTimer1.Enabled = False
End If
End Sub
Private Sub tmrTimer1_Tick(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles tmrTimer1.Tick
Dim PoKropce, sekundy As Integer
Dim grSekundy, grMinuty, grGodziny As Integer
Dim strPoKropce, strWyswietlacz As String
' Licznik zwiększamy o 1 co 1/100 sekundy
Licznik = Licznik + 1
sekundy = Int(Licznik / 100)
' Tworzymy grupy do wyświetlenia:
' grupę godzin – grGodziny, grupę minut - grMinuty, itd.
grGodziny = Int(sekundy / 3600)
' grupa minut, to reszta z dzielenia sekund na godziny
grMinuty = Int((sekundy Mod 3600) / 60)
' grupa sekund, to reszta z dzielenia na minuty
' reszty z dzielenia na godziny wszystkich sekund.
grSekundy = ((sekundy Mod 3600) Mod 60)
' Wartość dziesiątych i setnych sekundy,
' to reszta z dzielenia licznika przez 100.
PoKropce = Licznik Mod 100
' Tworzenie Stringu do wyświetlenia
If PoKropce = 0 Then
strPoKropce = "00"
ElseIf PoKropce <= 99 Then
strPoKropce = Format(PoKropce, "00")
End If
strWyswietlacz = Format(grGodziny, "00")
strWyswietlacz = strWyswietlacz & ":" & Format(grMinuty, "00")
strWyswietlacz = strWyswietlacz & ":" & Format(grSekundy, "00")
strWyswietlacz = strWyswietlacz & "." & strPoKropce
Me.Text = strWyswietlacz
lblEkran.Text = strWyswietlacz
End Sub
Copyright © 2009 Janusz Bonarowski
2