[VB] Probleem met tijd rekenen en textbox!

Status
Niet open voor verdere reacties.

hcmofo

Gebruiker
Lid geworden
21 apr 2008
Berichten
8
Hallo,

Ik heb een script gemaakt voor het optellen van tijd bij de huidige tijd.

Het werkt als volgt:

De gebruiker klikt op de button '+15 minuten' en er wordt in een label de huidige tijd + 15 minuten zichtbaar.

Wat ik graag zou willen hebben is dat je meerdere keren kan klikken op de '+15 minuten' button zodat je eindeloos 15 miuten kan toevoegen aan de huidige tijd.

Voorbeeld:

Het is nu 12.00
Na 1 keer klikken: 12.15
Na 2 keer klikken: 12.30
Na 3 keer klikken: 12.45
etc. etc.

Dit is een voorbeeld van mn huidige code:
Code:
Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
Label5.Text = (DateAndTime.Now.AddMinutes(15))
End Sub


--------------------------------------------

Vervolgens heb ik nog een vraag:

Ik heb ook een textbox die kan ingevuld worden door middel van het klikken op buttons. Deze buttons hebben elk een waarde.

Voorbeeld:

Als je klikt op button 1 dan verschijnt er in de textbox een 1.
En klik je op 2 dan verschijnt er een 2. etc. etc.
Deze nummers verschijnen netjes achter elkaar.

Wat ik graag zou willen hebben is dat er maar maximaal 5 nummers in de textbox ingevuld kunnen worden.
En ja, ik heb dit al aangegeven met 'MaxLength' en dit werkt ook als je de textbox m.b.v. het toetsenbord invult.
Maar doe je dit met de buttons, dan negeert hij de 'MaxLength'

Dit is een voorbeeld van mn huidige code:
Code:
'Numerieke toetsenbord

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox1.Text &= "1"
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        TextBox1.Text &= "2"
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        TextBox1.Text &= "3"
    End Sub


Weet iemand misschien een oplossing voor deze problemen?

Alvast bedankt!

Greetz,

HCDD
 
Laatst bewerkt:
In je eerste vraag moet je kijken naar de functie DateAdd. Zo te zien gebruik je Office 2007? Als dat niet het geval is dan post je in het verkeerde forum.

Je tweede vraag: In je onclick event van je button moet je testen of het aantal karakters kleiner is dan vijf voordat je de volgende eraan plakt.
Code:
If len(me.text0)<5 then me.text0 &= "1"

Enjoy!
 
Beste Guus,

Ik ben op het moment aan het programmeren in Microsoft Visual Basic 2008 Express Edition, dus niet in Office.

Mijn tweede vraag heb ik overigens opgelost met het volgende script dat overigens veel lijkt op het gene wat je zojuist hebt gepost:
Code:
'Tekens tellen
        ElseIf Len(TextBox1.Text) > 5 Then
            MsgBox("Te veel tekens!" & vbCr & " 5 tekens maximaal!", MsgBoxStyle.Exclamation, "Error")

Over mijn 1ste vraag ben ik nog niet helemaal uit.
Ik kan nog steeds maar 1 keer klikken. Heb je misschien een iets uitgebreidere oplossing?

Mvg,

HCDD
 
Code:
Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
Teller+=1
Label5.Text = (DateAndTime.Now.AddMinutes(15*Teller))
End Sub
je ziet dat ik een Teller heb toegevoegd.die teller moet je dimensioneren in de module zodat die binnen de module globaal wordt. beter zou zijn een static variabele binnen de functie maar ik weet niet hoe je die declareert binnen een functie. iedere keer dat je op button 13 klikt, wordt de waarde met 1 verhoogd.

een andere optie zou kunnen zijn dat je een spinbutton gebruikt. die staat in de lijst van je controls
 
Dank je!

Het werkt nu bijna helemaal goed.

Nog een paar dingen,

Als wat moet ik 'Teller' declaren?

En ook is er nog iets bij gekomen,
Niet alleen moet er extra tijd bij de huidige tijd, maar ook nog een variabel getal uit een textbox. Als volgt:

Code:
Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
        Teller += 1
        Label5.Text = (DateAndTime.Now.AddMinutes(TextBox1.Text + (15 * Teller)))
    End Sub

Ook zonder de extra textbox waarde werkt het nog niet helemaal lekker. De eerste paar keer klikken gaat goed, daarna rekent hij steeds meer minuten/dagen/uren erbij.

Is er iets niet goed gegaan?

Mvg,

HCDD
 
De teller moet je declareren als een integer. afhankelijk hoe vaak je op die knop drukt.

Wat voor programma ben je eigenlijk aan het maken?

Voor meer beginners informatie moet je hier zijn. Erg leuk is coding4fun
Enjoy!
 
De extra minuten toevoegen knoppen werken nog steeds onafhankelijk van elkaar.
Dit zijn de knoppen...
Code:
'Tijd toevoegen

Dim Teller As Integer

    Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
        Teller += 1
        Label5.Text = (DateAndTime.Now.AddMinutes(TextBox1.Text + (15 * Teller)))
    End Sub

    Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
        Teller += 1
        Label5.Text = (DateAndTime.Now.AddMinutes(TextBox1.Text + (30 * Teller)))
    End Sub

    Private Sub Button14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button14.Click
        Teller += 1
        Label5.Text = (DateAndTime.Now.AddMinutes(TextBox1.Text + (540 * Teller)))
    End Sub

    Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click
        Teller += 1
        Label5.Text = (DateAndTime.Now.AddMinutes(TextBox1.Text + (3945 * Teller)))
    End Sub

Er zijn dus 4 knoppen die elk een aantal minuten toevoegen aan het label.
Wat er nu gebeurd is dat het werkt als je alleen maar dezelfde tijd blijft toevoegen.
Voeg je echter ook nog een andere tijd toe bvb. 30 min --> 30 min --> 15 min
Dan gaat de tijd op label 5 flippen.

Oh en btw, ik maak een tijd calculatie voor een bedrijf, en aangezien ze pauzes hebben en snachts en in het weekend niet werken kunnnen ze die extra tijd toevoegen gebruiken om deze tijd met 1 knop erbij te tellen.
Tenzij je een andere manier weet hoe je tijd kan overslaan, bvb van 22.00 tot 7.00 dan moet het maar op deze manier.

Mvg,

HCDD
 
wat bedoel je met flippen?
kan je een voorbeeld database posten?
 
Ik gebruik geen database, omdat het programma niets hoeft op te slaan, het moet telkens snel en eenmalig tijd kunnen berekenen.

Dit is het stukje waar ik denk dat het fout gaat.

Code:
   'Tijd toevoegen

    Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
        Teller += 1
        Label5.Text = (DateAndTime.Now.AddMinutes(TextBox1.Text + (15 * Teller)))
    End Sub

    Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
        Teller += 1
        Label5.Text = (DateAndTime.Now.AddMinutes(TextBox1.Text + (30 * Teller)))
    End Sub

    Private Sub Button14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button14.Click
        Teller += 1
        Label5.Text = (DateAndTime.Now.AddMinutes(TextBox1.Text + (540 * Teller)))
    End Sub

    Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click
        Teller += 1
        Label5.Text = (DateAndTime.Now.AddMinutes(TextBox1.Text + (3945 * Teller)))
    End Sub

Wat er moet gebeuren:
Als er bijvoorbeeld een order start op vrijdag om 13.00 en de productietijd is 3 uur, dan heb je dus de weekend knop en de 15 min pauze knop nodig (omdat er maandag ochtent ook nog pauze is).
Ik wil graag dat elke knop, onafhankelijk van elkaar, tijd kan toevoegen aan label 5, ook wel de KLAAR tijd.
Bijvoorbeeld:

Tijd NU: 12.00
Productie tijd: 20 minuten (textbox invoer)
*berekenen*
Tijd KLAAR: 12.20

klik op +15 minuten pauze ---> 12.35 daarna
klik op +30 minuten pauze ---> 13.05 daarna
klik op +30 minuten pauze ---> 13.35 daarna
klik op +15 minuten pauze ---> 13.50 daarna

Ik hoop dat je nu ongeveer een idee hebt wat er fout gaat...

Mvg,

HCDD
 
Laatst bewerkt:
Wat bedoel je met flippen? wat voor resultaat geeft het label waardoor jij vindt dat de label flipt?
 
dat snap ik maar wat voor tijden zijn dat dan??

Ik heb een bijlage toegevoegd met de .exe file erin.
Speel er maar een beetje mee, je komt vanzelf tegen waar de fout zit.
Je moet klikken op de verschillende 'extra tijd toevoegen buttons' om het te zien in de label.
 

Bijlagen

de rar file kan ik niet lezen en executables voer ik niet uit.
zitten de source files erbij?
 
@kwajong graag een eigen vraag maken a.u.b.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan