Ć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