Gå til innhold

Anbefalte innlegg

Skrevet (endret)

Hei jeg trenger litt hjelp med en timer

 

jeg skal lage en timer som begynner og blinke rødt når den er ferdig og teller ned fra så så mange sekunder etter man har trykka på buttonen.

 

kan noen hjelpe?

Endret av Martin-Vb
Videoannonse
Annonse
Skrevet

Jeg formoder dette er i VB6? I så fall kan du eksempelvis løse dette ved å legge til en tekstboks (txtCountDown), en Shape (shpLight), to timere (henholdsvis tmrCountDown og tmrBlink) samt en knapp (evt. flere) med navn cmdAction. La Caption på knappen være satt til "Start" og shpLights Shape 3, BackColor grå og BackStyle 1. Sett tmrBlink.Interval til antall millisekunder mellom hvert "blink" og tmrCountDown.Interval til 1000, mens tmrCountDown.Enabled må være satt til False. Legg så inn følgende kode i formen (høyreklikk på formen og velg View Code):

' Holder styr på hvorvidt vi teller ned eller ei

Public Running As Boolean

 

' Lagrer tekstboksens verdi når nedtellingen begynner

Public SavedValue As String

Public Seconds As Long

 

Private Sub cmdAction_Click()

 

    ' Vi kaller prosedyren nedenfor

    ReverseState

 

End Sub

 

Public Sub ReverseState()

 

    ' En annen variant av denne linjen er som følger:

    ' If Running Then Running = False Else Running = True

    Running = Not Running

   

    ' Sjekk om vi skal starte eller avslutte en nedtelling

    If Running Then

   

        ' Omform tekst til antall sekunder

        If IsNumeric(txtCountDown.Text) Then

            ' Bare bruk tekstboksens verdi

            Seconds = txtCountDown.Text

        ElseIf IsDate(txtCountDown.Text) Then

            ' Finner ut hvor mange sekunder det er mellom tekstboksens tid og 00:00

            Seconds = DateDiff("s", CDate(txtCountDown.Text), TimeSerial(0, 0, 0))

        Else

            ' Informer brukere om at vi ikke kan finne ut hvor mange sekunder tekstboksen angir

            MsgBox "Ugyldig inndata - kan ikke konvertere til sekunder.", vbCritical, "Feil"

           

            ' Rydd opp etter oss

            Running = Not Running

           

            ' Hopp ut av prosedyren

            Exit Sub

        End If

   

        ' Husk tekstboksens verdi (kan godt fjernes om ønsket)

        SavedValue = txtCountDown.Text

   

        ' Fortell brukeren hva neste handling vil gjøre

        cmdAction.Caption = "Stopp"

       

    Else

 

        ' Tilbakestill kontroller

        txtCountDown.Text = SavedValue

        cmdAction.Caption = "Stopp"

       

    End If

   

    ' Sett de riktige verdiene i de to modusene

    txtCountDown.Locked = Not Running ' fjerner redigeringsmulighet

    tmrBlink.Enabled = Not Running ' starter/stopper blinking

    tmrCountDown.Enabled = Running ' starter/stopper nedtelling

 

End Sub

 

Private Sub tmrBlink_Timer()

 

    ' Bytt mellom de to fargene

    shpLight.BackColor = IIf(shpLight.BackColor = vbBlack, vbYellow, vbBlack)

 

End Sub

 

Private Sub tmrCountDown_Timer()

 

    ' Trekk fra et sekund

    Seconds = Seconds - 1

   

    ' Vis antall sekunder igjen

    txtCountDown.Text = Seconds

   

    ' Se om vi har telt helt ned

    If Seconds <= 0 Then

        ReverseState

    End If

 

End Sub

Skrevet (endret)
får en feil med sekundene

8821215[/snapback]

Hm, prøv å endre IsDate-delen til følgende:

Seconds = DateDiff("s", TimeSerial(0, 0, 0), CDate(txtCountDown.Text))

I tillegg kan det nok være lurt å legge til en TimeSerial i tmrCountDown_Timer:

txtCountDown.Text = TimeSerial(0, 0, Seconds)

Hvilken feilmelding får du i det første skjermskuddet?

 

Feilmeldingen du får sist indikerer at du ikke har skrevet inn tiden (husk at tekstboksen må være synlig) i tekstboksen. Den må skrives inn som en (evt.) tid (eksempelvis 12:00:00, 00:05:00, ect.) eller antall sekunder (23, 650, ect.).

Endret av aadnk

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...