Jag försöker göra en egen liten äggklocka där man matar in i tre textrutor tim, min, sek. Sedan är det tänkt att man ska starta nedräkning med en knapp. du får använda dig av en timer som har intervallen 1000 (som är en sek) Hej Deklarerad en modulnivå varibel: Tack för svar. HejÄggklocka
Nu undrar jag hur jag ska göra för att den ska minska värdena med en sekunds mellanrum.
Jag tror jag har koll på for-loop och if-satser, men det är det där med tiden. I c++ finns det en funktion delay. Finns den i VB eller måste man lösa det med timer-objekt?
/MickeSv: Äggklocka
och i timer 1 skriver du kanske
do until val(text1) <= 0
val(text1) - 1
loop
ungefär så...det är inte en fullständig lösning..men nu har du lite att tänka på...=)
MVH och lycka till
/bjSv: Äggklocka
Du kan ta en koll på mitt uppskick Programarkivet:Två StopUr växelvis
Den kan du bygga om efter ditt eget tycke
mvh
SvenSv: Äggklocka
<code>
Private mTimeOut as Date
</code>
Vid start av nedräkning, beräknar slut tid och lagrar det i variabeln och start en timer som kontrollerar värdet regelbundet tills det att aktuellt datum är större eller lika med mTimeOut.
<code>
mTimeOut = Now() + TimeSerial(txtHour.Text, txtMinute.Text, txtSecond.Text)
</code>
För att beräkna hur lång tid som är kvar behöver man bara göra en subtraktion av aktuell tid från mTimeOut.
<code>
Dim tmpDate As Date
tmpDate = mTimeOut - Now()
txtHour.Text = Hour(tmpDate)
txtMinute.Text = Minute(tmpDate)
txtSecond.Text = Second(tmpDate)
End If
</code>Sv: Äggklocka
Jag får ändå inte riktigt till det.
Så här ser Timer1 ut
Private Sub Timer1_Timer()
Sek = Val(txtSek.Text)
Do Until Sek <= 0
Sek = Sek - 1
Loop
Timer1.Enabled = False
End Sub
och så här ser Knappen ut
Private Sub cmdStart_Click()
Timer1.Enabled = True
Sek = Val(txtSek.Text)
If Sek = 0 And Min = 0 And Tim = 0 Then
lblResult.Caption = Tim & ":" & Min & ":" & Sek
MsgBox "Tiden är slut!"
Exit Sub
End If
If Sek > 0 Then
Sek = Sek - 1
lblResult.Caption = Tim & ":" & Min & ":" & Sek
End If
If Sek = 0 And Min > 0 Then
Min = Min - 1
Sek = 60
lblResult.Caption = Tim & ":" & Min & ":" & Sek
End If
If Min = 0 And Sek = 0 And Tim > 0 Then
Tim = Tim - 1
Min = 60
Sek = 60
lblResult.Caption = Tim & ":" & Min & ":" & Sek
End If
End Sub
/MickeSv: Äggklocka
Ett grundkoncept som du kan bygga kring
Option Explicit
Dim sek As Long
Dim oldSek As Long
Dim txtValue As Long
Dim Start As Single
'Timer Interval 448 för att säkert få träff varje Sekund
Private Sub Timer1_Timer()
'Om midnatt passeras
If Start > Timer Then Start = Start - 86400
sek = Timer
If txtValue - (sek - Start) <= 0 Then
Timer1.Enabled = False
MsgBox txtSek & " sek klar"
End If
If sek <> oldSek Then
lblResult.Caption = txtValue - CLng(sek - Start) & " sek"
End If
oldSek = sek
End Sub
Private Sub cmdStart_Click()
Start = Timer
txtValue = CLng(txtSek)
Timer1.Enabled = True
End Sub