Avatar billede clausjacobsen Nybegynder
28. august 2002 - 15:54 Der er 5 kommentarer og
1 løsning

Count down timer

Hvordan laver jeg en lille timer som tæller ned fra et vilkårligt antal minuter, F.eks 5 minutter ?
Avatar billede thesurfer Nybegynder
28. august 2002 - 16:29 #1
5 min = 5 * 60 sekunder = 300 sekunder

lav en timer med intervallet 1000 og en variable (varCountDown) der starter på f.eks. 300.

hver gang funktionen bliver udførst skal varCountDown være:

varCountDown = varCountDown - 1


** OBJEKTER:

Timer, navn: Timer1
Commandbutton, navn: cmdStart
Textbox, navn: txtAntalMinutter
Label, navn: lblSekunder


** INDSTILLINGER:

sæt Timer1.Interval = 1000
sæt timeren til disabled (timer1.enabled = false)


** KODE:


Dim varCountDown As Integer

Private Sub cmdStart_Click()

' i textboxen står f.eks. 5..
' 5 min * 60 sek/min = 300 sekunder:
varCountDown = txtAntalMinutter.Text * 60

' aktivere timeren:
Timer1.Enabled = True

' så den viser rigtigt:
varCountDown = varCountDown + 1

End Sub

Private Sub Timer1_Timer()

' så længe at der er mere end 0 sekund tilbage:
If varCountDown > 0 Then '

  ' træk 1 sekund fra:
  varCountDown = varCountDown - 1

  ' skriv det i labelen så vi kan se det:
  lblSekunder.Caption = "Sekunder: " & varCountDown
End If

End Sub




/theSurfer.
Avatar billede kantoraza Nybegynder
28. august 2002 - 19:11 #2
Kunne det formuleres bedre?

;)
Avatar billede martin_moth Mester
28. august 2002 - 20:59 #3
For at forfine løsningen fra theSurfer, kan du tilføje følgende sub:

Private Sub txtAntalMinutter_KeyPress(KeyAscii As Integer)
'Procedure der kun tillader tal (samt backspace m.v.) som input i textfelt
  Select Case KeyAscii
    Case vbKeyReturn 'Enter-tast
      SendKeys "{tab}" 'Enter virker på samme måde som TAB
    Case vbKeyBack 'Backspace tillades
    Case 48 To 57 'Tallene 0-9 tillades
    Case Else 'Alle andre tastetryk ignoreres
      KeyAscii = 0
  End Select
End Sub

Så kan man ikke indtaste andet end tal i din text-box. Desuden kan du sætte property'en Max = 3 for at sikre, at man kun taster 3-cifrede tal ind (max 999 minutter - det må være rigeligt;o)

Husk nu at give points til theSurfer

/Martin Moth
Avatar billede clausjacobsen Nybegynder
30. august 2002 - 09:52 #4
Den kunne være en løsning, men det som jeg gerne ville have tælleren til var at tælle ned fra de 05:00 minutter så man kunne se det på skærmen...
Altså det skal vises på skærme: 05:00 --> 04:59 --> 04:58 ect.

Det kan godt være at jeg har formuleret mig dårligt så derfor får theSurfer de 30 point, men jeg vil meget gerne høre om en eventuel løsning på ovenstående ;-)
Avatar billede thesurfer Nybegynder
29. oktober 2003 - 23:53 #5
"bedre sent end aldrig".. :)

Jeg faldt over noget kode på experts-exchange.com..
url: http://www-tcsn.experts-exchange.com/Programming/Programming_Languages/Visual_Basic/Q_20760375.html

Dim sec As Long

Private Sub Form_Load()
    Timer1.Interval = 1000
    sec = 60 * 5
    Label1.Caption = Format$(Fix(sec / 60), "00") & ": " & Format$(sec Mod 60, "00") & " seconds left"
    Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
    sec = sec - 1
    Label1.Caption = Format$(Fix(sec / 60), "00") & ": " & Format$(sec Mod 60, "00") & " seconds left"
    If sec = 0 Then End
End Sub"...

Jeg faldt over noget kode på experts-exchange.com..
url: http://www-tcsn.experts-exchange.com/Programming/Programming_Languages/Visual_Basic/Q_20760375.html

Dim sec As Long

Private Sub Form_Load()
    Timer1.Interval = 1000
    sec = 60 * 5
    Label1.Caption = Format$(Fix(sec / 60), "00") & ": " & Format$(sec Mod 60, "00") & " seconds left"
    Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
    sec = sec - 1
    Label1.Caption = Format$(Fix(sec / 60), "00") & ": " & Format$(sec Mod 60, "00") & " seconds left"
    If sec = 0 Then End
End Sub
Avatar billede thesurfer Nybegynder
29. oktober 2003 - 23:53 #6
uhm... oops...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester