Countdown die niet Live update.

Status
Niet open voor verdere reacties.
Ok, ik zal nog een keer een uitgebreide(re) uitleg schrijven.

Maar voor de progressbar:
Er zijn altijd nog een paar integers waarmee je kan rekenen... Dan moet je wel eerst het totale aantal seconden berekenen (dus minuten * 60 etc).
Dan wil ik je er ook nog op wijzen dat deze code in principe maar in 1 sub gebruikt kan worden. Dat komt omdat er 1 waarde teveel hardcoded (dus niet variabel) in de code staat:
PictureBox2.Width = Label1.Text / 900 * 194
Die kan je niet aanpassen aan de totale hoeveelheid seconden.

Ik zal zo nog even een voorbeeldje daarvan maken en dat hierbij plakken...

MartinJM

[edit]
Als je de subs snapt, vertel dan eens in het kort wat je denkt hoe ze werken?

Als je dat (correct) kan, dan weet je zeker dat je het snapt.
[/edit]
 
Laatst bewerkt:
Je maakt een sub aan, daarin geef je bijvoorbeeld de Extra_minuten = 15 die geef je aan bij de knop voor een 15 minuten break. geloof me ik snap het :D je geeft in de sub alleen de waarden die verandert moeten worden bij een andere timer :D

Geweldig die subs!


Van die 900 kan ik een integer maken toch? zodat hij verandert kan worden met subs?
 
Laatst bewerkt:
Inderdaad, je snapt het! En het is inderdaad heel handig. Het maakt veel codes makkelijker/overzichtelijker etc.

Subs kunnen ook op meerdere manieren gebruikt worden, maar daar ga ik nu even niet verder op in.



De code met progressbar support zou dit moeten zijn:
[CPP] Private Eind_Uur As Integer
Private Eind_Minuut As Integer
Private Eind_Seconde As Integer
Private Totaal_Seconden As Integer
Private ProgressbarWidth As Integer = 190
Private Message As String = Nothing

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Message = "Pauze voorbij"
Testsub2(, 5, )
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Message = "Rookpauze voorbij"
Testsub2(, 2, )
End Sub

Private Sub Testsub2(Optional ByVal Extra_Uur As Integer = 0, Optional ByVal Extra_Minuten As Integer = 0, Optional ByVal Extra_Seconden As Integer = 0)
Eind_Uur = Now.Hour + Extra_Uur
Eind_Minuut = Now.Minute + Extra_Minuten
Eind_Seconde = Now.Second + Extra_Seconden

Dim BerekenTotaalUur As Integer = Eind_Uur - Now.Hour
Dim BerekenTotaalMinuut As Integer = Eind_Minuut - Now.Minute
Dim BerekenTotaalSeconde As Integer = Eind_Seconde - Now.Second

BerekenTotaalTerug:

If BerekenTotaalUur < 0 Then
BerekenTotaalUur += 24
GoTo BerekenTotaalTerug
ElseIf BerekenTotaalMinuut < 0 Then
BerekenTotaalUur -= 1
BerekenTotaalMinuut += 60
GoTo BerekenTotaalTerug
ElseIf BerekenTotaalSeconde < 0 Then
BerekenTotaalMinuut -= 1
BerekenTotaalSeconde += 60
GoTo BerekenTotaalTerug
End If

Totaal_Seconden = BerekenTotaalUur * 360 + BerekenTotaalMinuut * 60 + BerekenTotaalSeconde

Terug:

If Eind_Uur > 24 Then
Eind_Uur -= 24
GoTo Terug
ElseIf Eind_Minuut > 60 Then
Eind_Uur += 1
Eind_Minuut -= 60
GoTo Terug
ElseIf Eind_Seconde > 60 Then
Eind_Minuut += 1
Eind_Seconde -= 60
GoTo Terug
End If

Timer1.Interval = 10
Timer1.Start()
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
LblHuidigeTijd.Text = Format(Now.Hour, "00") & ":" & Format(Now.Minute, "00") & ":" & Format(Now.Second, "00")

Dim AftellenUur As Integer = Eind_Uur - Now.Hour
Dim AftellenMinuut As Integer = Eind_Minuut - Now.Minute
Dim AftellenSeconde As Integer = Eind_Seconde - Now.Second

AftellenTerug:

If AftellenUur < 0 Then
AftellenUur += 24
GoTo AftellenTerug
ElseIf AftellenMinuut < 0 Then
AftellenUur -= 1
AftellenMinuut += 60
GoTo AftellenTerug
ElseIf AftellenSeconde < 0 Then
AftellenMinuut -= 1
AftellenSeconde += 60
GoTo AftellenTerug
End If

PictureBox1.Width = ProgressbarWidth - ((AftellenUur * 360 + AftellenMinuut * 60 + AftellenSeconde) / Totaal_Seconden) * ProgressbarWidth

LblAftellen.Text = Format(AftellenUur, "00") & ":" & Format(AftellenMinuut, "00") & ":" & Format(AftellenSeconde, "00")
Me.Text = "TEST " & LblAftellen.Text

If Eind_Uur = Now.Hour And Eind_Minuut = Now.Minute And Eind_Seconde = Now.Second Then
Timer1.Stop()
MsgBox(Message)
End If
End Sub[/CPP]

Ik merk nu zelf ook op dat er bepaalde stukjes code zijn die nu vaker gebruikt worden. Dat stukje zou je dan in een sub kunnen zetten en die sub dan aanroepen, maar in dit geval denk ik dat dat niet nodig/handig is. Zo zie je maar dat het ook een keuze is wanneer je iets wel of niet in een aparte sub zet...
De '100%'-breedte staat bovenaan in een variable zodat deze makkelijk aan te passen is.


Probeer nu eerst alles goed te begrijpen en dan ligt er een goede basis voor verdere projecten! :thumb:

MartinJM
 
Harstikke bedankt voor alle hulp, ik zal alle informatie van je verzamelen en dan denk ik dat ik er wel uitkom MartinJM.

Heb hier wat subs gebruikt zoals je ziet :D
Code:
'Sub voor knoppencodes
    Private Sub Aftellen_Progressbar_Eind(Optional ByVal Extra_Minuten As Integer = 0, Optional ByVal Extra_Seconden As Integer = 0)

        Me.Text = ("TEST ") & Label1.Text
        Eind_Minuut = Now.Minute + Extra_Minuten
        Eind_Seconde = Now.Second + Extra_Seconden
        PictureBox2.Width = 0
        PictureBox3.Width = 0
        PictureBox4.Width = 0
        PictureBox5.Width = 0
Terug:

        If Eind_Minuut > 60 Then
            Eind_Minuut -= 60
            GoTo terug
        ElseIf Eind_Seconde > 60 Then
            Eind_Minuut += 1
            Eind_Seconde -= 60
            GoTo terug
        End If

        Timer1.Interval = 10
        Timer1.Enabled = True
    End Sub

    'Knop voor Break.
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Aftellen_Progressbar_Eind(15, 0)
    End Sub
    
    'Knop voor Lunch.
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Aftellen_Progressbar_Eind(30, 0)
    End Sub
    'Knop voor 10 Minuten Personal Time.
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Aftellen_Progressbar_Eind(30, 0)
    End Sub
    'Knop voor Aangepaste Minuten.
    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Aftellen_Progressbar_Eind(TextBox1.Text, 0)
    End Sub

Edit: ik heb de code erin gezet maar hij loopt niet goed op een of andere manier:

Code:
Private Sub Totalesecondenberekeken()

        Dim BerekenTotaalMinuut As Integer = Eind_Minuut - Now.Minute
        Dim BerekenTotaalSeconde As Integer = Eind_Seconde - Now.Second

BerekenTotaalTerug:

        If BerekenTotaalMinuut < 0 Then
            BerekenTotaalMinuut += 60
            GoTo BerekenTotaalTerug
        ElseIf BerekenTotaalSeconde < 0 Then
            BerekenTotaalMinuut -= 1
            BerekenTotaalSeconde += 60
            GoTo BerekenTotaalTerug
        End If

        Totaal_Seconden = BerekenTotaalMinuut * 60 + BerekenTotaalSeconde

    End Sub
    'Knop voor Break.
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Aftellen_Progressbar_Eind(15, 0)
        Totalesecondenberekeken()

+
Code:
PictureBox2.Width = (Totaal_Seconden / 900) * 190
 
Laatst bewerkt:
Wat loopt er niet goed aan als ik vragen mag?

[edit]
Kijk misschien ook nog even goed naar de laatste code die ik je gegeven had.
[/edit]
 
Laatst bewerkt:
Als ik nu een knop aantik dan gaat de blauwe balk gelijk vol.

Ik heb voor de test je hele script zelfs gekopierd en geplakt, dat werkt niet.

Zie hier:
Code:
Option Explicit On
Public Class Form1
    Private Eind_Minuut As Integer
    Private Eind_Seconde As Integer
    Private Totaal_Seconden As Integer
    Private ProgressbarWidth As Integer = 190
    Private Message As String = Nothing

    Dim Time As Integer

    'Altijd bovenop en naam applicatie + tijd in formnaam.
    Public Sub MakeOnTop()
        Me.TopMost = True
    End Sub
    'Sub voor knoppencodes
    Private Sub Aftellen_Progressbar_Eind(Optional ByVal Extra_Minuten As Integer = 0, Optional ByVal Extra_Seconden As Integer = 0)

        Me.Text = ("TEST ") & Label1.Text
        Eind_Minuut = Now.Minute + Extra_Minuten
        Eind_Seconde = Now.Second + Extra_Seconden
        PictureBox2.Width = 0
        PictureBox3.Width = 0
        PictureBox4.Width = 0
        PictureBox5.Width = 0
Terug:

        If Eind_Minuut > 60 Then
            Eind_Minuut -= 60
            GoTo terug
        ElseIf Eind_Seconde > 60 Then
            Eind_Minuut += 1
            Eind_Seconde -= 60
            GoTo terug
        End If

        Timer1.Interval = 10
    End Sub
    'Sub voor de Knop Aangepaste Minuten
    Private Sub Aangepasteminuten()
        Me.Text = ("TEST ") & Label1.Text
        Eind_Minuut = Now.Minute + TextBox1.Text
        Eind_Seconde = Now.Second
        PictureBox2.Width = 0
        PictureBox3.Width = 0
        PictureBox4.Width = 0
        PictureBox5.Width = 0
Terug:

        If Eind_Minuut > 60 Then
            Eind_Minuut -= 60
            GoTo terug
        ElseIf Eind_Seconde > 60 Then
            Eind_Minuut += 1
            Eind_Seconde -= 60
            GoTo terug
        End If

        Timer4.Interval = 10
        Timer4.Enabled = True
    End Sub
    'Sub voor timerscript
    Private Sub Timers()
        Dim AftellenMinuut As Integer = Eind_Minuut - Now.Minute
        Dim AftellenSeconde As Integer = Eind_Seconde - Now.Second

AftellenTerug:

        If AftellenMinuut < 0 Then
            AftellenMinuut += 60
            GoTo AftellenTerug
        ElseIf AftellenSeconde < 0 Then
            AftellenMinuut -= 1
            AftellenSeconde += 60
            GoTo AftellenTerug
        End If

        'aftellen van minuten en seconden
        Label1.Text = Format(AftellenMinuut, "00") & ":" & Format(AftellenSeconde, "00")
        'progress van aftellen in de formlabel
        Me.Text = ("TEST ") & Label1.Text

        'Einde
        If Eind_Minuut = Now.Minute And Eind_Seconde = Now.Second Then
            Timer1.Enabled = False
            MsgBox("Test", 4096 + 48, "Test")
            PictureBox2.Width = 0
            PictureBox3.Width = 0
            PictureBox4.Width = 0
            PictureBox5.Width = 0
        End If
    End Sub
    'totale seconden berekenen
    Private Sub Totalesecondenberekenen()

        Dim BerekenTotaalMinuut As Integer = Eind_Minuut - Now.Minute
        Dim BerekenTotaalSeconde As Integer = Eind_Seconde - Now.Second

BerekenTotaalTerug:

        If BerekenTotaalMinuut < 0 Then
            BerekenTotaalMinuut += 60
            GoTo BerekenTotaalTerug
        ElseIf BerekenTotaalSeconde < 0 Then
            BerekenTotaalMinuut -= 1
            BerekenTotaalSeconde += 60
            GoTo BerekenTotaalTerug
        End If

        Totaal_Seconden = BerekenTotaalMinuut * 60 + BerekenTotaalSeconde

Terug:

        If Eind_Minuut > 60 Then
            Eind_Minuut -= 60
            GoTo Terug
        ElseIf Eind_Seconde > 60 Then
            Eind_Minuut += 1
            Eind_Seconde -= 60
            GoTo Terug
        End If

        Timer1.Interval = 10
        Timer1.Start()

    End Sub
    'Knop voor Break.
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Aftellen_Progressbar_Eind(15, 0)
        Totalesecondenberekenen()
        Timer1.Enabled = True
    End Sub

    'Knop voor Lunch.
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Aftellen_Progressbar_Eind(30, 0)
        Totalesecondenberekenen()
        Timer2.Enabled = True
    End Sub
    'Knop voor 10 Minuten Personal Time.
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Aftellen_Progressbar_Eind(30, 0)
        Totalesecondenberekenen()
        Timer3.Enabled = True
    End Sub
    'Knop voor Aangepaste Minuten.
    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Aftellen_Progressbar_Eind(TextBox1.Text, 0)
        Totalesecondenberekenen()
        Timer4.Enabled = True
    End Sub
    'Stopknop.
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim Response As Integer

        ' Displays a message box with the yes and no options.
        Response = MsgBox(Prompt:="Timer stoppen?", Buttons:=vbYesNo)

        ' If statement to check if the yes button was selected.
        If Response = vbYes Then
            Time = 0
            Eind_Minuut = Now.Minute
            Eind_Seconde = Now.Second
            Timer1.Enabled = False
            Timer2.Enabled = False
            Timer3.Enabled = False
            Timer4.Enabled = False
            PictureBox2.Width = 0
            PictureBox3.Width = 0
            PictureBox4.Width = 0
            PictureBox5.Width = 0
            Label1.Text = ("00:00:00")
        Else
            ' The no button was selected.

        End If

    End Sub

    'Timer voor de Break.
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Timers()
        PictureBox2.Width = (Totaal_Seconden / 900) * 190
    End Sub
    'Timer voor de Lunch.
    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Timers()
        PictureBox3.Width = (Totaal_Seconden / 900) * 190
    End Sub
    'Timer voor de 10 Minuten Personal Time.
    Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
        Timers()
        PictureBox4.Width = (Totaal_Seconden / 900) * 190
    End Sub
    'Timer voor de Aangepaste Minuten.
    Private Sub Timer4_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer4.Tick
        Timers()
        PictureBox5.Width = (Totaal_Seconden / TextBox1.Text) * 190
    End Sub
    Private Overloads Sub URLTextBox_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown

        If e.KeyCode = Keys.Return Then
            Aftellen_Progressbar_Eind(TextBox1.Text, 0)
        End If
    End Sub
End Class

Edit: ik geef het op voor vandaag, bedankt voor de inzet :) (ik ga slapen, weltrusten)

Edit2: Hij werkt! ik ga hem nog wat aanpassen maar hij werkt!
 
Laatst bewerkt:
Hoi,

Fijn dat je het zelf hebt kunnen oplossen :thumb:

Wil je hier dan ook de oplossing plaatsen zodat mensen met hetzelfde probleem ook nog baat hebben bij dit topic? :)


MartinJM
 
Die had jij al geplaatst bij je vorige post, ik had hem alleen niet goed overgenomen ;)
 
MartinJM,

Het enigste wat ik nog in dit project verwerkt wil hebben is het aftellen van 41:00 Minuten bij het drukken op de Break knop en Aangepaste Tijd knop.

Ik gebruik deze code maar dan krijg ik een InvalidCastException :(

Code:
Private Sub Timer4_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer4.Tick
        Dim AftellenMinuut As Integer = Eind_Minuut - Now.Minute
        Dim AftellenSeconde As Integer = Eind_Seconde - Now.Second

        'geen unhandled expection bij invoeren "0" in TextBox1.Text
        If TextBox1.Text = 0 Then
            Timer4.Enabled = False
            PictureBox5.Width = 0
            Me.Text = ("TEST ")
            MsgBox("Geef aantal minuten tussen 1 - 59!", 4096 + 16, "TEST")
            Exit Sub
        End If

AftellenTerug:

        If AftellenMinuut < 0 Then
            AftellenMinuut += 60
            GoTo AftellenTerug
        ElseIf AftellenSeconde < 0 Then
            AftellenMinuut -= 1
            AftellenSeconde += 60
            GoTo AftellenTerug
        End If

        'progress statusbar
        PictureBox5.Width = ProgressbarWidth - ((AftellenMinuut * 60 + AftellenSeconde) / Totaal_Seconden) * ProgressbarWidth
        'aftellen van minuten en seconden
        Label1.Text = Format(AftellenMinuut, "00") & ":" & Format(AftellenSeconde, "00")
        'progress van aftellen in de formlabel
        Me.Text = ("ASN 2.0 ") & Label1.Text
        'resterende pt berekenen
        Label2.Text = ("41:00" - Label1.Text)
        'aftellen van totale tijd 41:00 minuten
        Label2.Text = Format(AftellenMinuut, "00") & ":" & Format(AftellenSeconde, "00")

        'Einde
        If TextBox1.Text >= 60 Then
            Timer4.Enabled = False
            PictureBox5.Width = 0
            Me.Text = ("ASN 2.0 ")
            Label1.Text = ("00:00")
            MsgBox("Geef aantal minuten tussen 1 - 59!", 4096 + 16, "TEST")
        ElseIf Eind_Minuut = Now.Minute And Eind_Seconde = Now.Second Then
            Timer4.Enabled = False
            MsgBox("TEST", 4096 + 48, "TEST")
            PictureBox2.Width = 0
            PictureBox3.Width = 0
            PictureBox4.Width = 0
        End If

De bedoeling is dus dat de Label2.Text de 41:00 minuten weergeeft en daar 15:00 minuten van aftelt als je de break neemt zodat hij op 26:00 komt te staan. Als je dan weer een Break neemt dan moet hij op 11:00 komen te staan. Vervolgens neem je nog 11 minuten pauze en dan staat hij op 00:00 :)

Zie:
Code:
'resterende pt berekenen
        Label2.Text = ("41:00" - Label1.Text)
        'aftellen van totale tijd 41:00 minuten
        Label2.Text = Format(AftellenMinuut, "00") & ":" & Format(AftellenSeconde, "00")
 
Laatst bewerkt:
Hoi,

Ik heb voor deze vraag toch weer de code genomen die ik al voor je had gemaakt, omdat ik daarvan zelf alles begrijp, en daarin zitten geen namen waarvan ik niet weet waarvoor ze zijn...

Daarbij kwam ik op dit:
[CPP]Public Class Form1

Private Eind_Uur As Integer
Private Eind_Minuut As Integer
Private Eind_Seconde As Integer
Private Begin_Uur As Integer
Private Begin_Minuut As Integer
Private Begin_Seconde As Integer
Private Totaal_Seconden As Integer
Private ProgressbarWidth As Integer = 190
Private Message As String = Nothing

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Message = "Pauze voorbij"
Testsub2(, 5, )
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Message = "Rookpauze voorbij"
Testsub2(, 2, )
End Sub

Private Sub Testsub2(Optional ByVal Extra_Uur As Integer = 0, Optional ByVal Extra_Minuten As Integer = 0, Optional ByVal Extra_Seconden As Integer = 0)
Eind_Uur = Now.Hour + Extra_Uur
Eind_Minuut = Now.Minute + Extra_Minuten
Eind_Seconde = Now.Second + Extra_Seconden

Begin_Uur = Now.Hour
Begin_Minuut = Now.Minute
Begin_Seconde = Now.Second

Dim BerekenTotaalUur As Integer = Eind_Uur - Now.Hour
Dim BerekenTotaalMinuut As Integer = Eind_Minuut - Now.Minute
Dim BerekenTotaalSeconde As Integer = Eind_Seconde - Now.Second

BerekenTotaalTerug:

If BerekenTotaalUur < 0 Then
BerekenTotaalUur += 24
GoTo BerekenTotaalTerug
ElseIf BerekenTotaalMinuut < 0 Then
BerekenTotaalUur -= 1
BerekenTotaalMinuut += 60
GoTo BerekenTotaalTerug
ElseIf BerekenTotaalSeconde < 0 Then
BerekenTotaalMinuut -= 1
BerekenTotaalSeconde += 60
GoTo BerekenTotaalTerug
End If

Totaal_Seconden = BerekenTotaalUur * 360 + BerekenTotaalMinuut * 60 + BerekenTotaalSeconde

Terug:

If Eind_Uur > 24 Then
Eind_Uur -= 24
GoTo Terug
ElseIf Eind_Minuut > 60 Then
Eind_Uur += 1
Eind_Minuut -= 60
GoTo Terug
ElseIf Eind_Seconde > 60 Then
Eind_Minuut += 1
Eind_Seconde -= 60
GoTo Terug
End If

Timer1.Interval = 10
Timer1.Start()
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
LblHuidigeTijd.Text = Format(Now.Hour, "00") & ":" & Format(Now.Minute, "00") & ":" & Format(Now.Second, "00")

Dim AftellenUur As Integer = Eind_Uur - Now.Hour
Dim AftellenMinuut As Integer = Eind_Minuut - Now.Minute
Dim AftellenSeconde As Integer = Eind_Seconde - Now.Second

AftellenTerug:

If AftellenUur < 0 Then
AftellenUur += 24
GoTo AftellenTerug
ElseIf AftellenMinuut < 0 Then
AftellenUur -= 1
AftellenMinuut += 60
GoTo AftellenTerug
ElseIf AftellenSeconde < 0 Then
AftellenMinuut -= 1
AftellenSeconde += 60
GoTo AftellenTerug
End If

Try
PictureBox1.Width = ProgressbarWidth - ((AftellenUur * 360 + AftellenMinuut * 60 + AftellenSeconde) / Totaal_Seconden) * ProgressbarWidth
Catch
End Try

LblAftellen.Text = Format(AftellenUur, "00") & ":" & Format(AftellenMinuut, "00") & ":" & Format(AftellenSeconde, "00")
Me.Text = "TEST " & LblAftellen.Text

If Eind_Uur = Now.Hour And Eind_Minuut = Now.Minute And Eind_Seconde = Now.Second Then
Timer1.Stop()
MsgBox(Message)
End If
End Sub

Private Sub Min(Optional ByVal uren As Integer = 0, Optional ByVal minuten As Integer = 0, Optional ByVal seconden As Integer = 0)
Eind_Uur -= uren
Eind_Minuut -= minuten
Eind_Seconde -= seconden

Dim BerekenTotaalUur As Integer = Eind_Uur - Begin_Uur
Dim BerekenTotaalMinuut As Integer = Eind_Minuut - Begin_Minuut
Dim BerekenTotaalSeconde As Integer = Eind_Seconde - Begin_Seconde

BerekenTotaalTerug:

If BerekenTotaalUur < 0 Then
BerekenTotaalUur += 24
GoTo BerekenTotaalTerug
ElseIf BerekenTotaalMinuut < 0 Then
BerekenTotaalUur -= 1
BerekenTotaalMinuut += 60
GoTo BerekenTotaalTerug
ElseIf BerekenTotaalSeconde < 0 Then
BerekenTotaalMinuut -= 1
BerekenTotaalSeconde += 60
GoTo BerekenTotaalTerug
End If

Totaal_Seconden = BerekenTotaalUur * 360 + BerekenTotaalMinuut * 60 + BerekenTotaalSeconde
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Min(, , 5)
End Sub
End Class
[/CPP]

Als je hierbij te vaak op de 'minder tijd'-knop drukt, dan zal het daarna nog rond de 23 uur duren volgens het programma, dus misschien kan je zelf daaraan nog wat doen. Ik heb hierbij er ook voor gezorgd dat de progressbar ook meegaat als het aftellen opeens minder word. Het enige probleem daarbij was, dat als het opeens nog 23 uur duurt, er een error kwam. Daarom een try-catch blok om de width van de progressbar.

Dit zal je dan maar verder moeten inbouwen in jouw programma, maar zorg wel weer dat je alles begrijpt (en goed kopieert :P).

Succes!:thumb:

MartinJM
 
Bedankt, ik zal er eens me om prutsen als ik zometeen thuis ben. :d
 
Volgens mij wat je doet met het bovenstaande script (in het voorbeeld) 5 seconden van de 15:00 afhalen bij het klikken op button3_click?

Maar ik heb Label1.Text waar een countdown van 15:00 tot 00:00 instaat en wat de bedoeling is dat op Label2.Text van 41:00 tot 26:00 aftelt op hetzelfde moment. klopt dat wat ik zeg?
 
Dus je wilt eigenlijk dat er vaker tegelijkertijd afgeteld kan worden?

Wat mij dan het makkelijkst lijkt is dit:
Je hebt 1 hoofdscherm waarin je kiest hoe lang er afgeteld moet worden. Als er dan op 'OK' gedrukt wordt, dan opent een nieuw schermpje waarin afgeteld wordt.

Je kan het ook doen met verschillende threads, maar dat lijkt mij onnodig moeilijk. Als het maar om 2 keer tegelijk gaat, dan kan je misschien ook de code gewoon 2 keer erin zetten. Niet heel mooi, maar voor dit zou het wel voldoen.

MartinJM

[edit]
Of bedoel je dat er 1 label is die niet aftelt waarvan dan een aantal minuten afgetrokken moeten worden die dan in een andere label afgeteld moeten worden?
[/edit]
 
Laatst bewerkt:
Ik heb het al anders opgelost, ik zal de volledige code plaatsen als ik thuis ben :)
 
Onderstaand de code voor de 2e teller:

Code:
'Sub voor total pt
    Private Sub Aftellen_Progressbar_Eind2(Optional ByVal Extra_Minuten2 As Integer = 0, Optional ByVal Extra_Seconden2 As Integer = 0)

        Eind_Minuut2 = Now.Minute + Extra_Minuten2
        Eind_Seconde2 = Now.Second + Extra_Seconden2

        Dim BerekenTotaalMinuut2 As Integer = Eind_Minuut2 - Now.Minute
        Dim BerekenTotaalSeconde2 As Integer = Eind_Seconde2 - Now.Second

BerekenTotaalTerug:

        If BerekenTotaalMinuut2 < 0 Then
            BerekenTotaalMinuut2 += 60
            GoTo BerekenTotaalTerug
        ElseIf BerekenTotaalSeconde2 < 0 Then
            BerekenTotaalMinuut2 -= 1
            BerekenTotaalSeconde2 += 60
            GoTo BerekenTotaalTerug
        End If

        Totaal_Seconden = BerekenTotaalMinuut2 * 60 + BerekenTotaalSeconde2
Terug:

        If Eind_Minuut2 > 60 Then
            Eind_Minuut2 -= 60
            GoTo terug
        ElseIf Eind_Seconde2 > 60 Then
            Eind_Minuut2 += 1
            Eind_Seconde2 -= 60
            GoTo terug
        End If
        Timer5.Enabled = True
    End Sub

Heel erg bedankt voor al je hulp MartinJM!
 
Geen probleem! :thumb:

Daar is het forum toch ook voor :p :)

MartinJM
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan