Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

VB6: Timer im Zeitformat (hh:mm:ss) anzeigen... Wie?

Mic2004 / 16 Antworten / Flachansicht Nickles

Hallo Leute!

Ich habe mir mit Visual Basic 6 einen Art kleine Stoppuhr gebastelt. Man gibt eine Startzeit ein und sie zählt dann auf null runter, um danach ein ereignis zu starten.

Das blöde daran ist nur, dass sie nur Sekunden zählt. Gibt man also als Startzeit 2 min 10 s ein, dann zählt die Stoppuhr von 130 s an rückwärts. Nun wäre es mir aber lieber, wenn sie im Format 02:10 rückwärts zählen würde. Der mir dafür bekannte Befehal Format(CStr(nSek), "mm:ss") funktioniert da leider aber nicht. Verwendet man ihn, zeigt die Stoppuhr eine völlig falsche Startzeit an und zählt auch nicht mit.

Hier mal ein Auszug aus meinem Quelltext:
Private Sub Command1_Click()
Dim Startzeit As Integer
Timer1.Enabled = True
If Text1.Text = "" And Text2.Text = "" Then
MsgBox ("Keine Startzeit eingegeben!")
GoTo Ende
Else
If Text1.Text = "" Then Text1.Text = 0
If Text2.Text = "" Then Text2.Text = 0
Startzeit = (Text1.Text * 60) + Text2.Text
nSek = Startzeit ' Timer initialisieren
Timer1.Interval = 1000 ' entspricht einer Sekunde
Label1.Caption = CStr(nSek) & " s" ' Countdown
End If
Ende:
End Sub

Private Sub Timer1_Timer()
nSek = nSek - 1 ' und wieder eine Sekunde vorbei
Label1.Caption = CStr(nSek) & " s"

If nSek Timer1.Enabled = False
[...........]
Else
End If
End Sub


Weiterhin such ich noch eine Möglichkeit, wie man am Ende des Timers evtl. einen roten Kreis (Shape) blinken lassen könnte, damit der Nutzer schneller sieht, dass die Zeit um ist.

Ich hoffe, ihr könnt mir mit guten Ideen helfen.

Grüße,
Mic2004.


bei Antwort benachrichtigen
Sovereign Sylvia Mic2004 „Hallo Leute! Ich habe leider jetzt erst mitbekommen, dass ich euch um mein...“
Optionen

Poooh,
und ich dachte schon "wieder ein undankbarer Typ".

Die einfachste Lösung, um zwei - ich hatte gar nicht mitbekommen, dass es sich um mehr als einen Kreis handelt - Kreise abwechselnd blinken zu lassen, ist (in Anlehnung an mein voriges Posting):

If mInt_seconds + mInt_minutes + mInt_hours = 0 Then
Shape1.Visible = Not Shape1.Visible
Shape2.Visible = Not Shape1.Visible
End If


Bevor die Zeit abgelaufen ist, sind beide Kreise nicht zu sehen.
1)
Nach Ablauf der Zeit leuchtet der erste Kreis (Shape1) auf; da der zweite Kreis (Shape2) genau das Gegenteil vom ersten Kreis tun soll, bleibt er zunächst aus.
2)
Beim nächsten Timer-Durchgang ist die Zeit immer noch abgelaufen, aber jetzt soll Shape1 das Gegenteil tun von dem, was er bis dahin gemacht hat: er wird unsichtbar; und da Shape2 immer das Gegenteil von Shape1 macht, leuchtet jetzt der zweite Kreis auf.

Beim nächsten Timer-Durchgang wird wieder 1) gesetzt, etc.
Falls der Blinkrythmus zu langsam ist, kannst du ja gleich nach der If-Zeile einfügen "Me.Timer1.Interval = 500" oder welcher Wert dir zusagt; musst einfach ausprobieren.

Einfacher geht's nicht, es sei denn, du hattest etwas Komplizierteres im Sinn, wann und in welchem Abstand welcher Kreis blinken soll; dann musst du das noch mal genauer erläutern.

HAND
Sylvia

Mein sz streikt heute wieder ------ Nobody is perfect, and we prove it every day.
bei Antwort benachrichtigen