Avatar billede mbl Juniormester
02. november 2003 - 20:14 Der er 7 kommentarer og
1 løsning

hvordan lave jeg en timer

Jeg skal lave en timer som kan gå fra 1 sek til 1 time, der må gerne være sådan at der kommer et timeglas frem nå timeren kører.
Avatar billede free_help Nybegynder
02. november 2003 - 21:28 #1
i hvad til hvad ?
Avatar billede joern Nybegynder
02. november 2003 - 21:38 #2
Hej.

Markøren som timeglas i 1 time, det lyder ikke gennemtænkt.  Er det et ur når du har en kage i ovnen, du vil lave?

På en form indsætter du timer-kontrollen og indstiller hvor ofte den skal tikke, f.eks. 1000 hvilket er hvert sekund.  Så skal du have en variabel til at tælle med, og den kan være integer (indtil 32000) ellers skal den være long.

Hvis du vil vise den tid der er gået siden timeren gik igang - da du startede dit program, må du have en label.  Viser du bare din variabel er det sekunder der vises, skal den vise minutter og sekunder må du dividere tallet med 60 og så beregne resten (modulus).

Før jeg skriver kodeeksempel, må du lige komme lidt tættere på i dit spørgsmål.

M.v.h.  Jørn
Avatar billede lillholm Nybegynder
02. november 2003 - 21:53 #3
hmmm... jeg maa gi joern ret i at du ikke beskriver det ret godt :)

men jeg har nu anyway forsoegt at kode noget til dig :)
-------
Private Sub Command1_Click()
'det starter timeren og grunden til der bliver ganget med
'1000 er fordi at timeren skal ha det i millisekunder
Timer1.Interval = Text1.Text * 1000
'for at faa et timeglas frem
Form1.MousePointer = 11
End Sub

Private Sub Timer1_Timer()
'tjaa.. giver sig selv.. eller koer programmet og du vil forstaa :)
MsgBox "der er nu gaaet " & Timer1.Interval / 1000 & " sekunder"
'her stopper du timeren og saetter din mousepointer til default
Timer1.Interval = 0
Form1.MousePointer = 0
End Sub
---------

du kan flaa hele lortet ned herfra:
http://folkeskoleopgaver.dk/timer.rar

hvis der er noget du ikke forstaar skriver du bare :D
Avatar billede sjh Nybegynder
03. november 2003 - 00:44 #4
Du kan også gøre sådan:

'-------------------------- Form1 --------------------------
Option Explicit

Private lngSek As Long

Private Sub Form_Load()
  lngSek = 86395 '<- 23 timer, 59 min og 55 sek

  With Timer1
      .Interval = 1000 '1000 = 1 sek
      .Enabled = True
  End With
End Sub

Private Sub Timer1_Timer()
  lngSek = lngSek + 1
 
  '1 sek
  If (lngSek Mod 1) = 0 Then
    'Køre når der er gået 1 sek
    Me.Caption = "1 sek (" & lngSek & ")"
  End If

  '60 sek = 1 min
  If (lngSek Mod 60) = 0 Then
    'Køre når der er gået 1 minut
    Me.Caption = "1 menut (" & lngSek & ")"
  End If

  '3600 sek = 1 time
  If (lngSek Mod 3600) = 0 Then
    'Køre når der er gået en time
    Me.Caption = "En time (" & lngSek & ")"
  End If
 
  '86400 sek = 24 timer
  If (lngSek Mod 86400) = 0 Then
    'Køre når der er gået 24 timer
    Me.Caption = "24 timer (" & lngSek & ")"

    lngSek = 0
  End If
End Sub
'-------------------------- Form1 --------------------------
Avatar billede kjeld_klit Nybegynder
03. november 2003 - 09:03 #5
Man kan også bruge systemuret, så er man sikker på at tiden er rigtig selv om computeren er på hård arb. imens. (Det vil memlig sætte Timer1 i stå.):

Option Explicit

Dim Tid1, Tid2, Tid3 As Date

Private Sub Timer1_Timer()
    Tid2 = Now
    Tid3 = Tid2 - Tid1
    If Format(Tid3, "h") + Format(Tid3, "n") = 0 Then Me.Caption = Format(Tid3, "s") & " sek."
    If Format(Tid3, "h") = 0 And Format(Tid3, "n") > 0 Then Me.Caption = Format(Tid3, "n") & " min. " & Format(Tid3, "s") & " sek."
    If Format(Tid3, "h") > 0 Then Me.Caption = Format(Tid3, "h") & " tim. " & Format(Tid3, "n") & " min. " & Format(Tid3, "s") & " sek."
End Sub

Private Sub Form_Load()
    Tid1 = Now
    Timer1.Enabled = True
    Timer1.Interval = 1000
End Sub
Avatar billede martin_moth Mester
03. november 2003 - 11:34 #6
Inden jeg kommer med det 5. svar ;o), vil jeg gerne spørge mbl hvad han vil?

Skal PC'en gå "i baglås"/låses i det tidsinterval du angiver?
Skal cursoren vises som et timeglad kun i din VB-app. eller i hele windows?
Hvad er poienten med det hele?
Avatar billede mbl Juniormester
04. november 2003 - 09:20 #7
Undskyld det dårlige formuleret spørgsmål. Det jeg søger er at jeg har en formular som jeg skal forsinke når den åbnes, og forsinkelsen skal ligge et sted mellem 1 til 5 sek måske længer "Derfor timeglas", og i det andet tilfælde skal jeg skifte til en anden formular og derfor den længer tid men ingen timeglas.
Avatar billede sjh Nybegynder
04. november 2003 - 12:04 #8
'--------------------------- Form1 ---------------------------
Option Explicit

Private Declare Function GetTickCount Lib "kernel32" () As Long

Public Sub Pause(ByVal lngSek As Long)
Dim lngTick As Long
  MousePointer = 11
    lngTick = GetTickCount
    Do Until GetTickCount >= (lngTick + (lngSek * 1000&))
      DoEvents
    Loop
  MousePointer = 0
End Sub

Private Sub Command1_Click()
  Call Pause(5) '<- 5 sekunder (Hvis du flytter vinduet går der lenger tid)
  MsgBox "Der er gået 5 sekunder"
End Sub
'--------------------------- Form1 ---------------------------
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