Martin-Vb Skrevet 9. juni 2007 Skrevet 9. juni 2007 (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 9. juni 2007 av Martin-Vb
aadnk Skrevet 9. juni 2007 Skrevet 9. juni 2007 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 eiPublic 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
Martin-Vb Skrevet 9. juni 2007 Forfatter Skrevet 9. juni 2007 (endret) får en feil med sekundene Endret 9. juni 2007 av Martin-Vb
aadnk Skrevet 9. juni 2007 Skrevet 9. juni 2007 (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 9. juni 2007 av aadnk
aadnk Skrevet 9. juni 2007 Skrevet 9. juni 2007 Merkelig. Jeg kan i hvert fall ikke reprodusere problemet. Hva skjer når du åpner og kjører vedlagt formfil? frmTimer.zip
Martin-Vb Skrevet 9. juni 2007 Forfatter Skrevet 9. juni 2007 fikk det til for litt siden. det var noe rart med shapen
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå