Countdown via Label

herrbert

Grünschnabel
Heyho @ll!

Ich will mir für OGame n Rechner basteln, wie lange ich noch auf ein spezielles Ereignis, etc. warten muss...


Folgendes Problem:

Code:
MetallBenoetigt = CInt(Text3.Text)
MetallZeitStd = MetallBenoetigt \ Metallprostunde
MetallZeitMin = (((MetallBenoetigt Mod Metallprostunde) / Metallprostunde) * 60) \ 1
MetallZeitSek = (((((MetallBenoetigt Mod Metallprostunde) / Metallprostunde) * 60) - MetallZeitMin) * 60) \ 1

Damit berechne ich, wie man sieht, die Zeit auf Sekunden genau...

Auf jeden Fall hab ich da n Label, und da drin soll die Zeit runterlaufen...

Code:
If MetallZeitMin = 0 Then If MetallZeitStd > 0 Then MetallZeitStd = MetallZeitStd - 1
If MetallZeitSek = 0 Then If MetallZeitMin > 0 Then MetallZeitMin = MetallZeitMin - 1
DoEvents
MetallZeitSek = MetallZeitSek - 1
  
Label9.Caption = MetallZeitStd & ":" & MetallZeitMin & ":" & MetallZeitSek & " Stunden"


Das steht jetzt so alles im Timer... Ich weiß noch nich so ganz über VB Bescheid, wo man den Krempel anordnen soll...

Auf jeden Fall macht der Countdown exakt nix... Timer.Interval steht auf 1000 und Enabled = True... Also sollte er jede Sekunde runterzählen via "MetallZeitSek = MetallZeitSek - 1"...
Tut er aber nich...

Wie muss ich das jetzt machen?


Zusatzfrage: Wenn ich ne Meldung will, dass der fertig is, und ich meinetwegen grad im Vollbild TV schaue... Wie kann ich da n Popup unten rechts z.B. generieren, das mir sagt, dass da n Event is, bzw. mir ~30 Sekunden vorher Bescheid gibt?


Vielen Dank schonmal
Herr Bert
 
Du musst dem Timer auch mitteilen, was er nach dem Intervall machen soll. Also auf die Funktion / Sub verweisen, die das Label aktualisiert.

Zu Deiner zweiten Frage :

beim Arbeiten schaut man kein Fernsehen.

Spaß beiseite :

Du kannst Dir eine Messagebox anzeigen lassen, wenn ein gewisser Schwellwert erreicht ist. Oder eine zweite Form anzeigen lassen, oder eben mit APIs 'CreateWindowsEx' und 'AnimateWindow' ein wunderbar sich auflösendes Fenster erzeugen.
 
Echt nich?

Ich dachte, man arbeitet immer vorm Fernseher... Dann hab ich da was falsch verstanden... ;)

Nene, das mit der zweiten Funktion(Popup) ist nur für den privaten Gebrauch gedacht... Auf der Arbeit will ich halt nicht, dass ich immer auf OGame bin, sondern nur dran erinnert werd und dann bei Zeiten vorbeischau... Sieht doof aus, wenn man da paar Mal am Tag reinschaut... Sieht so nach ... faul aus...

Falls das zu undeutlich war mit dem Timer...
Es passiert alles im Timer selber... Ich aktiviere per Button den Timer... Denn wenn ich die Zeit abziehen will, muss ich doch Zugriff auf die Zeit haben... und mit Variablen übergeben kenn ich mich in VB noch nich aus... Ich mag eigentlich Delphi viel mehr, aber auf der Arbeit ist VB-only angesagt... Und naja, weiterbilden schadet nie ;-)

Also müsst ich praktisch auf den Timer selber verweisen? Endlosschleife?
Weil die Abbruch-Bedingung hab ich ja schon eingebaut... Ich dachte, dass der Timer sich immer nach dem Intervall erneut aufrufen würde, bzw. ich das durch "DoEvents" erreiche...

Hat mir da der nette IT-Mensch wohl doch nicht alles erzählt... :p
 
Sieht so nach ... faul aus...

Das kann ich so nur unterstreichen. ;)

Zum Timer :

Code:
Private Sub cmdStartTimer_Click

Timer1.Intervall = 1000 'entspricht einer Sekunde, max. = 65535
Timer1.Enabled = True 'Timer aktivieren

End Sub

Private Sub Timer1_Timer()

'Aufruf der Funktion die das Label aktualisiert, bspw. 'CalcLabal'
CalcLabel

End Sub

Private Function CalcLabel()

'Hier Dein Code für die Berechnung der Zeit und des Labels

If Label9.Caption = "00:00:30" Then 
 Msgbox "30s remaining.", vbInformation, "Time runs"
ElseIf Label9.Caption = "00:00:00" Then
 Timer1.Enabled = False 'Timer abstellen, weil Zeit abgelaufen
End if

End Function

So müsste es gehen.

Liebe Grüße,

Pascal
 
Zurück