Menukaart

Status
Niet open voor verdere reacties.
Scannen was nog niet helemaal klaar, maar McAfee doet er gewoon te lang over.... Ik geloof het wel, het is gewoon veilig.

Ik ga het nu testen.:)



Decimalen werken helemaal niet... Kijk hier nog even naar:
Let er wel op dat bijvoorbeeld een integer geen getallen achter de komma kan bevatten. Integers worden afgerond op gehele getallen. Dus gebruik geen integers als je met decimale getallen wilt werken... Wat je wel kan gebruiken kan je hier zien: http://msdn.microsoft.com/en-us/library/47zceaw7%28v=vs.80%29.aspx.
Ik zou je Doubles willen aanraden.

Ook zou ik nooit alle files online zetten zoals je nu hebt gedaan. Iedereen kan dan gewoon de code zien en gebruiken etc. Dat lijkt mij toch niet de bedoeling...
 
Laatst bewerkt:
hier plaatje van de code:
Module1.JPG

@MartinJM: wat moet aan de code aangepast worden?
 
Laatst bewerkt door een moderator:
Ik heb een paar kleine aanpassingen gedaan in je code:

Form1:
Code:
Public Class Form1
    Public selectedOber = ""
    Public Value1 As Double
    Public Oper As Char

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Form2.Hide()
        Form3.Hide()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Artikel_Verwijderen.Click
        ListView1.Items.Clear()
    End Sub
    Private Sub Artikel_Toevoegen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Artikel_Toevoegen.Click
        Form3.Show()
        Me.Hide()
    End Sub

    Private Sub Ober_wijzigen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ober_wijzigen.Click
        Dim Obers As String() = {"Ober1", "Ober2", "Ober3", "Ober4", "Ober5", "Ober6", "Ober7", "Ober8", "Ober9", "Ober10"}
        If Ober.Text.Length > 14 Then selectedOber = Ober.Text.Split(":")(1).TrimStart(" ")
        Dim frm As New Form2
        frm.ListBox1.Items.AddRange(Obers)
        If selectedOber <> "" Then frm.ListBox1.SelectedIndex = Array.IndexOf(Obers, selectedOber)
        frm.ShowDialog()
        Ober.Text = "Ober: " & selectedOber
    End Sub

    Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
        Calculate()
    End Sub

    Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
        TextBox2.Text = TextBox2.Text & ","
    End Sub

    Private Sub GetalButtons(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click, Button5.Click, Button6.Click, Button7.Click, Button8.Click, Button9.Click, Button10.Click
        Dim Bt As Button = CType(sender, Button)
        ShowValue(Bt)
    End Sub

    Private Sub TekenButtons(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click, Button14.Click, Button15.Click, Button16.Click
        Dim Bt As Button = CType(sender, Button)
        arithmetic(Bt)
    End Sub
End Class

Module1:
Code:
Module Module1

    Private nieuw As Boolean = False

    Sub ShowValue(ByVal Butt As Button)
        If nieuw = False Then
            Form1.TextBox2.Text = CDbl(Form1.TextBox2.Text & Butt.Text)
        Else
            nieuw = False
            Form1.TextBox2.Text = CDbl(Butt.Text)
        End If
    End Sub

    Sub arithmetic(ByVal Butt As Button)
        Form1.Value1 = CDbl(Form1.TextBox2.Text)
        Form1.Oper = Butt.Text
        Form1.TextBox2.Text = ""
    End Sub

    Sub Calculate()
        nieuw = True

        Select Case Form1.Oper
            Case "+"
                Form1.TextBox2.Text = Math.Round(CDbl(Form1.Value1 + CDbl(Form1.TextBox2.Text)), 2)
            Case "-"
                Form1.TextBox2.Text = Math.Round(CDbl(Form1.Value1 - CDbl(Form1.TextBox2.Text)), 2)
            Case "X"
                Form1.TextBox2.Text = Math.Round(CDbl(Form1.Value1 * CDbl(Form1.TextBox2.Text)), 2)
            Case "÷"
                Form1.TextBox2.Text = Math.Round(CDbl(Form1.Value1 / CDbl(Form1.TextBox2.Text)), 2)
        End Select
    End Sub
End Module

In form1 heb ik de handlers zo aangepast zodat je code veel kleiner en overzichtelijker is geworden. In Module1 heb ik "Val" vervangen door "CDbl" en heb ik Math.Round gebuikt. Wat ik ook nog heb aangepast in Form1, is dat als je nu op de . (punt)-knop drukt, dat er dan geen punt, maar een komma komt te staan. Dat ging namelijk ook niet helemaal goed.

Succes!:thumb:


*EDIT*
Wat me verder nog opvalt:
Als je het programma opstart, is er geen ober ingelogd.
Als je een nieuw artikel wil toevoegen, dan wordt Form1 onzichtbaar en wordt niet opnieuw zichtbaar als je de 'popup' sluit. Dan moet je het programma dus opnieuw opstarten... Ik zou Form1 gewoon zichtbaar houden...
 
Laatst bewerkt:
hij geeft nu 2 cijfers als ik op 1 knop drukt dus 1 = 11

*EDIT*
Als je een nieuw artikel wil toevoegen, dan wordt Form1 onzichtbaar en wordt niet opnieuw zichtbaar als je de 'popup' sluit. Dan moet je het programma dus opnieuw opstarten... Ik zou Form1 gewoon zichtbaar houden...
Hoe pas je dat aan? Ik heb in code gezet Form1.Show() maar toch gaat het weg.
Als je het programma opstart, is er geen ober ingelogd.
Aangepast
 
Laatst bewerkt:
Code:
Form1.Visible = True

Ook al zou ik Form1 helemaal niet sluiten, en dan daarna de andere Form als Dialog openen:
Code:
Form.ShowDialog()

Dan kan je Form1 niet selecteren/gebruiken als de andere form open staat...

MartinJM
 
Als ik nu op toevoegen klik dan sluit form3 en form1 is ook weg. Hoe kan dit?
En wat is het antwoord op vraag: hij geeft nu 2 cijfers als ik op 1 knop drukt dus 1 = 11
 
Voor beide vragen zou ik toch je code die je nu hebt moeten zien...

Wat ik denk bij de vraag over de dubbele 1 is dat je een deel uit mijn code hebt geplakt in jouw code. Als je dan nog eens naar mijn code kijkt, dan zie je dat daarin ook iets is verdwenen... Bij mij werkt dit namelijk gewoon.

Voor het andere: Daarvoor zal je nog eens goed moeten kijken of je de juiste codes op het juiste moment gebruikt.... Of je moet je code even hier plaatsen, dan doen wij dat voor je...

MartinJM
 
Code:
Code:
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Form1.Visible = True
    End Sub
Code:
Private Sub Toevoegen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Toevoegen.Click
        Form1.Show()
        Me.Close()
    End Sub
 
Laatst bewerkt door een moderator:
Verander deze code (bij form1):
Code:
    Private Sub Artikel_Toevoegen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Artikel_Toevoegen.Click
        Form3.Show()
        Me.Hide()
    End Sub

In deze code:
Code:
    Private Sub Artikel_Toevoegen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Artikel_Toevoegen.Click
        Form3.ShowDialog()
    End Sub


Haal dan dit weg:
Code:
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     Form1.Visible = True
End Sub


En verander dit:
Code:
Private Sub Toevoegen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Toevoegen.Click
     Form1.Show()
     Me.Close()
End Sub
in dit:
Code:
Private Sub Toevoegen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Toevoegen.Click
     Me.Close()
End Sub

Dat zou moeten werken...

Succes!
 
Het werkt...
Zou je me een andere vraag willen oplossen?:
Ik heb in mijn TabControl 5 tabs waaronder:
- home
- voorgerechten
- hoofdgerechten
- nagerechten
- drank

In alle tabs heb ik een ListBox gezet. Nu wil ik dat er vanaf het begin dat ik op de Tab klik het er staat en dat als je dan op klikt het bij de rekening komt. Kan dit? En zo ja, hoe?

*EDIT*
Als het je teveel werk is, zou je me dan kunnen zeggen op welke site het antwoord staat (Engels of Nederlands) of een link naar een tutorial/forum met hetzelfde onderwerp
 
Laatst bewerkt:
Zoiets:
Code:
    Private Sub ListBox1_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDoubleClick
        If ListBox1.SelectedItems.Count = 1 Then
            'toevoegen aan rekening
        End If
    End Sub

Namen zal je nog wel moeten aanpassen...

Wat dit doet is dit: Als er dubbel op de listbox geklikt wordt, dan wordt er eerst gecheckt of er maar 1 item is geselecteerd. Is dat niet het geval, dan gebeurt er niks. Is dat wel het geval, dan wordt de code ertussen uitgevoerd. Ik weet niet hoe je rekening in elkaar zit, dus daar kan ik je ook niet verder mee helpen totdat je dat hebt uitgelegd (listbox/listview/etc, hoe je het erin wilt hebben enz.)

MartinJM
 
Link voor actuel programma: https://rapidshare.com/files/1485480591/Menu_1.0.rar
Dan zie je wel wat ik bedoel...
IK bedoel dus dat alle artikelen in een ListBox komen en dat je het kunt selecteren en dan op de rekening worden bijgeschreven. Vind jij dit ook de beste manier of is er een andere/makkelijkere manier?

*EDIT*
Ik heb een foutje ontdekt: Als ik op het rekenmachinetje een 0 intik doet ie t eerst wel maar na de komma haalt de 0 de "," weg
 
Laatst bewerkt:
Klaar:

Code:
    Private Sub Voorgerechten_MouseDoubleClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Voorgerechten.MouseDoubleClick
        Dim LsBox As ListBox = CType(sender, ListBox)

        If LsBox.SelectedItems.Count = 1 Then
            For i As Integer = 0 To ListView1.Items.Count - 1 Step 1
                If ListView1.Items(i).SubItems(0).Text = LsBox.SelectedItem Then
                    ListView1.Items(i).SubItems(1).Text = CInt(ListView1.Items(i).SubItems(1).Text) + 1
                    Exit Sub
                End If
            Next

            Dim LsViewItem As ListViewItem = New ListViewItem
            LsViewItem.SubItems(0).Text = LsBox.SelectedItem
            LsViewItem.SubItems.Add("1")
            LsViewItem.SubItems.Add("Prijs")
            ListView1.Items.Add(LsViewItem)
        End If
    End Sub

Ik weet alleen niet hoe je van plan was om de prijzen te regelen, dus dat moet je zelf dan nog even regelen....

Succes! MartinJM


PS: Ik ben nog naar de 0 aan het kijken....

Ook opgelost. Alleen deze code in de module plakken:
Code:
Module Module1
    Private nieuw As Boolean = False

    Sub ShowValue(ByVal Butt As Button)
        If nieuw = False Then
            Form1.TextBox2.Text = Form1.TextBox2.Text & Butt.Text
        Else
            nieuw = False
            Form1.TextBox2.Text = CDbl(Butt.Text)
        End If
    End Sub

    Sub arithmetic(ByVal Butt As Button)
        Form1.Value1 = CDbl(Form1.TextBox2.Text)
        Form1.Oper = Butt.Text
        Form1.TextBox2.Text = ""
    End Sub

    Sub Calculate()
        nieuw = True

        Select Case Form1.Oper
            Case "+"
                Form1.TextBox2.Text = Math.Round(CDbl(Form1.Value1 + CDbl(Form1.TextBox2.Text)), 2)
            Case "-"
                Form1.TextBox2.Text = Math.Round(CDbl(Form1.Value1 - CDbl(Form1.TextBox2.Text)), 2)
            Case "X"
                Form1.TextBox2.Text = Math.Round(CDbl(Form1.Value1 * CDbl(Form1.TextBox2.Text)), 2)
            Case "÷"
                Form1.TextBox2.Text = Math.Round(CDbl(Form1.Value1 / CDbl(Form1.TextBox2.Text)), 2)
        End Select
    End Sub
End Module
 
Laatst bewerkt:
Ik zie geen voorwerpen in het Voorgerechten-Tab/ Hoe krijg ik het te zien? Wat zou de code eigenlijk doen?

Kun je misschien (als het niet te veel werk is) ook de code voor Artikel_Toevoegen proberen?

Wie kan me de eerste code van post #48 uitleggen?
 
Laatst bewerkt door een moderator:
Het is eigenlijk niet de bedoeling dat wij hier alle codes voor jou gaan maken. Als je dat wilt, dan zijn er vast wel anderen die dat (tegen een vergoeding) willen doen.

Wat mijn code doet is dit:
Als er op een item in een listbox dubbel wordt geklikt, dan wordt dat item toegevoegd aan de rekening. De prijs werkt niet omdat ik niet weet hoe je dat wilt regelen.

Ik zou nu niet gaan kijken naar de eerste code van post 48, want dat lijkt mij een beetje moeilijk/overbodig met dit project. Het kan heel handig zijn, maar voor nu lijkt het mij makkelijker om het te doen op een manier die je al kent.


Voor het artikel toevoegen kan je toch gewoon zoiets gebruiken:
Code:
Form1.Listbox1.Items.Add(Textbox1.Text)
(Of zoiets)

Alleen heb je dan nog wel het probleem dat het niet opgeslagen wordt. Daarvoor zal je zelf met een oplossing moeten komen. Als je geen idee hebt, zoek dan eerst ook even op google. Daarvia kan je veel antwoorden vinden. Dat scheelt jou en ons tijd. Als je het dan nog niet snapt, kan je het natuurlijk altijd nog eerst hier vragen.


MartinJM
 
Hij voegt het nu inderdaad toe. Met de prijs heb ik in mijn vorige de volgende code gebruikt:
[CPP]Form1.ListBox1.Items.Add("Artikel")
Form1.ListBox2.Items.Add("Prijs")[/CPP]

*EDIT*
Kun je ook een button invoegen als je op de Toevoegen-knop klikt in Form2?

Bekijk bijlage Menu_v1.1.txt
Bijgevoegd textbestandje wat alles doet.:)
 
Laatst bewerkt door een moderator:
@bloodshed: zou je me je rekenmachine in je voorbeeld willen uitwerken? Als zich andere vrijwilligers melden ook goed...
Het numerieke gedeelte is puur voor de ober om in te voeren wat hij heeft ontvangen van de klant. Een rekenmachine op het scherm zou niet nodig zijn. Misschien zelfs teveel van het goede.

Verder doe ik niets met VB dus ik zou alleen voorbeelden in C# kunnen geven.

Ik zou je ook willen aanraden wat te doen aan je naamgeving voor forms, controls, methods etc. Dit maakt het lezen van de code een stuk prettiger voor jezelf en zeker wanneer je wilt dat iemand anders naar je code kijkt.

Enkele voorbeelden:

Form1, Form2... -> frmMain, frmWaiters, frmProducts
Voorgerechten (een listbox) -> lbVoorgerechten
Ober_Wijzigen (een knop) -> btnWijzigOber
Ober (een label) -> lblOberName
Subtotaal (een textbox) -> txtSubtotaal

Je ziet door een goede naam te geven aan iets leest het een stuk makkelijker. En kun je ook echt lezen wat er gebeurt ipv terug te moeten kijken wat ListBox1 is (wat na verloop van tijd alleen nog maar goed te doen is door de schrijver van de code).

Code:
Form1.ListBox1.Items.Add(textBox1.Text)
of
Code:
frmMain.lbProducts.Items.Add(txtProductName.Text)
 
Heb je mijn nieuwe versie al getest?
Link: https://rapidshare.com/files/1485480591/Menu_1.0.rar

Veel werkt al, maar nog niet alles. Waaronder:
- De Artikel_Verwijder-knop
- Alle producten moeten nog automatisch (dus vanaf dat de applicatie wordt opgestart) erin + prijzen.
- De SubTotaal knop (omdat ik nog geen prijzen erin heb)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan