/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Nedtælling?
Fra : Frank


Dato : 15-12-01 21:10

Hvordan laver jeg en nedtælling med en timer i følgende format 2:00, 1:59
osv til 0:00?
Frank



 
 
Tomas Christiansen (15-12-2001)
Kommentar
Fra : Tomas Christiansen


Dato : 15-12-01 23:13

Frank skrev:
> Hvordan laver jeg en nedtælling med en timer i følgende format 2:00,
1:59
> osv til 0:00?

Nu havde det jo været lettere at svare, hvis du havde fortalt, om det
er timer:minutter eller minutter:sekunder, som du ønsker at tælle ned,
men jeg kommer alligevel med et bud, idet jeg antager at du ønsker at
tælle minutter:sekunder.

1. Opret et Standard EXE projekt med en form.
2. Placer en label og en timer på formen (med deres standard-navne).
3. Indsæt følgende kode i formen og kør projektet:
--- cut --- cut --- cut --- cut --- cut --- cut ---
Option Explicit

Private m_lFinalCountDown As Long

Private Sub Form_Load()
m_lFinalCountDown = 120
Display
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
m_lFinalCountDown = m_lFinalCountDown - 1
Display
If m_lFinalCountDown <= 0 Then
Timer1.Enabled = False
MsgBox "BANG!", , "End of The World..."
End If
End Sub

Private Sub Display()
Label1.Caption = Format(TimeSerial( _
0, 0, m_lFinalCountDown), "nn:ss")
End Sub

--- cut --- cut --- cut --- cut --- cut --- cut ---

Der vil nu i Label1 være en tæller, som tæller ned fra 02:00 til ...
(gæt selv).

Bemærk at der er MANGE andre måder at gøre tricket på - dette er ikke
nødvendigvis den bedste, men den første, som faldt mig ind.

-------
Tomas


Carsten Jessen (15-12-2001)
Kommentar
Fra : Carsten Jessen


Dato : 15-12-01 23:54


"Frank" <trio@tdadsl.dk> wrote in message
news:3c1baebf$0$93448$edfadb0f@dspool01.news.tele.dk...
> Hvordan laver jeg en nedtælling med en timer i følgende format 2:00, 1:59
> osv til 0:00?
> Frank
>
>
En anden mulighed kunne være at bruge computerens ur.

fx.
Definér en variabel i din forms declaration:
Dim Nulpunkt as variant

Lav en knap som starter nedtællingen med følgende kode
Private Sub Command1_Click()

Nulpunkt = Now + TimeSerial(0, 2, 0) 'læs om TimeSerial i hjælpen
Timer1.Enabled = True

End Sub

og lav en timer med interval 200 og enabled=false og indsæt følgende kode
Private Sub Timer1_Timer()

Label1 = Format(Nulpunkt - Now, "n:ss")
If Label1 = "0:00" Then
Timer1.Enabled = False
Label1 = "BANG"
End If

End Sub

Mit bud er at denne kode er mere præcis end Thomas' forslag, da en timer
event nemt kan blive forsinket af andre events i programmet. Dog skal det
siges at mit eksempel heller ikke er super præcist, men mine erfaringer
siger at det er den bedste løsning.

MVH Carsten




Tomas Christiansen (16-12-2001)
Kommentar
Fra : Tomas Christiansen


Dato : 16-12-01 23:14

Carsten Jessen skrev:
> En anden mulighed kunne være at bruge computerens ur.

Naturligvis!

> Nulpunkt = Now + TimeSerial(0, 2, 0) 'læs om TimeSerial i hjælpen
....
> Mit bud er at denne kode er mere præcis end Thomas' forslag, da en
timer
> event nemt kan blive forsinket af andre events i programmet.

Bortset fra at du ikke kan stave mit navn rigtigt, må jeg klart
anbefale din fremgangsmåde med at bruge maskinens ur, fremfor den
fremgangsmåde, som jeg skitserede, med en sekund-tæller.

Problemet er, at man KAN risikere at miste et timer-event i ny og næ.
Hvis man indstiller timeren til at køre flere gange pr. sekund, vil
man formentlig ikke opdage, hvis der mistes et event, lige når tiden
på skærmen skal opdateres - opdateringen bliver blot forsinkes en
brøkdel af et sekund.

Bemærk at events ALTID være lidt "forsinkede" (dvs. ikke 100%
realtime), idet det tager en del tid inden VB's runtime finder ud af
at "noget" er sket, og hvad det medfører (kald af procedure i ens
program). Desuden sker udførelse af events altid (med et par
undtagelser) serielt og ikke "samtidig".

-------
Tomas


Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste