Menukaart

Status
Niet open voor verdere reacties.
knipselw.png

Download het project hier.

Heb trouwens de warning die je aangaf in post #118 ook gefixt. Zie mijn tutorial voor de verbeterde class.
Op zich was het niet erg omdat de warning nooit een foutmelding zou kunnen veroorzaken. :)
 
Laatst bewerkt:
Zou je me willen zeggen welke code's ik daarvan nodig heb voor op die resterende knoppen?
Dus voor :
- de Gerecht-Wijzigen + opslaan
- de Gerecht-Toevoegen + opslaan
 
Laatst bewerkt:
Hier is de nieuwe versie.

De code is wel ingewikkelder geworden (en ca. 300 regels), dus als je het niet snapt, hoor ik het wel ;)

55467909.png

Download hier.
 
Dus als ik het goed begrijp moeten de volgende code's er bij mij in:
Gerecht_Toevoegen (wordt veranderd in Nieuw):
PHP:
    Private Sub Nieuw_Click() Handles Nieuw.Click
        Try
            Dim result As Integer = MsgBox("Wilt u een nieuw gerecht toevoegen? Klik op Ja om een nieuw gerecht toe te voegen, klik op Nee om een nieuwe categorie toe te voegen.", 32 + 3 + 4096, Me.Text)
            If result = vbNo Then
                ''//Categorie toevoegen
                Dim naam As String = ""
                naam = InputBox("Voer de naam in voor de nieuwe categorie.", Me.Text)
                Do
                    If naam = "" Then Exit Sub
                    If NodeExists(naam, -1) Then MsgBox("Het gerecht is reeds ingevoerd.", 48 + 4096, Me.Text) Else If _
                       naam.Contains(";") Then MsgBox("Het puntkommateken ';' is niet toegestaan.", 48 + 4096, Me.Text)
                Loop Until Not NodeExists(naam, -1) And Not Name.Contains(";")
                TreeView1.Nodes.Add(naam)
                Save_INI()
            ElseIf result = vbYes Then
                ''//Gerecht toevoegen
                If TreeView1.Nodes.Count > 0 Then
                    Dim naam As String = ""
                    naam = InputBox("Voer de naam in voor het nieuwe gerecht.", Me.Text)
                    Do
                        If naam = "" Then Exit Sub
                        If NodeExists(naam, -1) Then MsgBox("Het gerecht is reeds ingevoerd.", 48 + 4096, Me.Text) Else If _
                           naam.Contains(";") Then MsgBox("Het puntkommateken ';' is niet toegestaan.", 48 + 4096, Me.Text)
                    Loop Until Not NodeExists(naam, -1) And Not Name.Contains(";")

                    Dim prijs As String = ""
                    Do
                        prijs = InputBox("Vul de prijs in voor het nieuwe gerecht.", Me.Text).Replace(".", ",")
                        If prijs = "" Then Exit Sub
                        If prijs.Contains(";") Then MsgBox("Het puntkommateken ';' is niet toegestaan.", 48 + 4096, Me.Text) Else If _
                            Not IsNumeric(prijs) Then MsgBox("U dient een geldig getal op te geven.", 48 + 4096, Me.Text)
                    Loop Until Not prijs.Contains(";") And IsNumeric(prijs)

                    Dim cat As String = "", catInt As Integer, counter As Integer = 0
                    Do
                        Dim strCatList As New System.Text.StringBuilder
                        For Each catName As TreeNode In TreeView1.Nodes
                            counter += 1
                            strCatList.AppendLine(counter.ToString & ": " & catName.Text)
                        Next

                        cat = InputBox("Vul het nummer van de categorie in waaraan u het nieuwe item wilt toevoegen: " & _
                                       vbNewLine & strCatList.ToString, Me.Text)
                        If cat = "" Then Exit Sub
                        Integer.TryParse(cat, catInt)
                        If cat.Contains(";") Then MsgBox("Het puntkommateken ';' is niet toegestaan.", 48 + 4096, Me.Text) Else If _
                             Not IsNumeric(cat) Or catInt > counter Or catInt < 0 Then MsgBox("U dient een geldig getal op te geven.", 48 + 4096, Me.Text)

                    Loop Until Not prijs.Contains(";") And IsNumeric(prijs) And catInt <= counter And catInt > 0
                    TreeView1.Nodes(catInt - 1).Nodes.Add(naam).Tag = prijs
                    Save_INI()
                Else : MsgBox("U dient eerst categorieën toe te voegen.", 48 + 4096, Me.Text) : End If
            End If
        Catch ex As Exception
            MsgBox(ex.Message, 16 + 4096, Me.Text)
        End Try
    End Sub

Gerecht_Wijzigen (wordt veranderd in Naam_Wijzigen):
PHP:
Private Sub NaamWijzigenToolStripMenuItem_Click() Handles NaamWijzigenToolStripMenuItem.Click, NaamWijzigen.Click
        Try
            If Not TreeView1.SelectedNode Is Nothing Then
                Dim naam As String
                Dim parentIndex As Integer = -1 ''//Voor parents
                Do
                    naam = InputBox("Wijzig de naam van '" & TreeView1.SelectedNode.Text & "' naar: ", Me.Text)
                    If naam = "" Then Exit Sub
                    If TreeView1.SelectedNode.Level = 1 Then parentIndex = _
                        TreeView1.SelectedNode.Parent.Index ''//Voor children
                    If NodeExists(naam, parentIndex) Then MsgBox("Het gerecht is reeds ingevoerd.", 48 + 4096, Me.Text) Else If _
                        naam.Contains(";") Then MsgBox("Het puntkommateken ';' is niet toegestaan.", 48 + 4096, Me.Text)
                Loop Until Not NodeExists(naam, parentIndex) And Not naam.Contains(";")
                TreeView1.SelectedNode.Text = naam
                Save_INI()
            Else
                MsgBox("Selecteer alstublieft een gerecht of een categorie.", 48 + 4096, Me.Text)
            End If
        Catch ex As Exception
            MsgBox(ex.Message, 16 + 4096, Me.Text)
        End Try
    End Sub

Nieuwe knop (naam: Prijs_Wijzigen):
PHP:
Private Sub Prijs_Wijzigen_Click() Handles Prijs_Wijzigen.Click, PrijsWijzigenToolStripMenuItem.Click
        Try
            If Not TreeView1.SelectedNode Is Nothing And TreeView1.SelectedNode.Level > 0 Then
                Dim prijs As String
                Dim parentIndex = TreeView1.SelectedNode.Parent.Index
                Do
                    prijs = InputBox("Wijzig de prijs van '€" & TreeView1.SelectedNode.Tag & "' naar: ", Me.Text).Replace(".", ",")
                    If prijs = "" Then Exit Sub
                    If NodeExists(prijs, parentIndex) Then MsgBox("Het gerecht is reeds ingevoerd.", 48 + 4096, Me.Text) Else If _
                        prijs.Contains(";") Then MsgBox("Het puntkommateken ';' is niet toegestaan.", 48 + 4096, Me.Text) Else If _
                        Not IsNumeric(prijs) Then MsgBox("U dient een geldig getal op te geven.", 48 + 4096, Me.Text)
                Loop Until Not NodeExists(prijs, parentIndex) And Not prijs.Contains(";") And IsNumeric(prijs)
                TreeView1.SelectedNode.Tag = prijs
                Label6.Text = "€" & (prijs * NumericUpDown1.Value).ToString("F").Replace(".", ",")
                Save_INI()
            Else
                MsgBox("Selecteer alstublieft een gerecht.", 48 + 4096, Me.Text)
            End If
        Catch ex As Exception
            MsgBox(ex.Message, 16 + 4096, Me.Text)
        End Try
    End Sub


Gerecht Verwijderen:
PHP:
    Private Sub Button1_Click() Handles Wissen.Click
        Try
            If ListView1.SelectedItems.Count > 0 Then
                For Each item As ListViewItem In ListView1.SelectedItems
                    ListView1.Items.Remove(item)
                Next
            Else
                If MsgBox("U heeft geen gerecht geselecteerd. Wilt u de hele lijst wissen?", 4096 + 48 + 4, Me.Text) = vbYes Then
                    For Each item In ListView1.Items
                        ListView1.Items.Remove(item)
                    Next
                End If
            End If
        Catch ex As Exception
            MsgBox(ex.Message, 16 + 4096, Me.Text)
        End Try
    End Sub

Wat moet aan de codes veranderd worden, want ik heb een ListView?
 
Waarom wil je een ListView gebruiken i.p.v. een TreeView? Je kunt nu toch om mijn project heen gaan bouwen of gewoon de code voor de TreeView gebruiken? :confused:
 
Laatst bewerkt:
Maar die werken dus schijnbaar niet, en die van mij wel ;)

Een ListView maakt dingen onnodig moeilijk, dit is toch een veel overzichtelijkere weergave van hoe alle gerechten zijn ingedeeld in categorieën?
 
Dat klopt. Ik wil t best om jouw programmaatje heenbouwen, als je mij zegt welke code's er dan veranderd moeten worden (bij mijn programmaatje).

*EDIT*
Maar ik heb iemand mijn programma laten zien en die wil m hebben als kassa-versie voor in de supermarkt. En dan is een treeview toch niet meer handig of tog nog?
 
Laatst bewerkt:
Ik kan toch niet zeggen wat er veranderd moet worden als jij niet zegt wat er veranderd moet worden...? :P

[edit]Ik weet niet hoe het gebruikt wordt. Als er heel veel producten zijn, wordt het natuurlijk lastiger. Maar er zijn toch zat uitgebreide, gespecialiseerde kassa-programma's. Waarom wil die persoon per se die van jou :P [/edit]
 
Laatst bewerkt:
Zo heb ik nu dat je al Artikelen kunt toevoegen aan de ListView, dit moet veranderd worden. De rest schiet me 1.2.3 niet te binnen.

Edit:
Omdat ik het gratis voor hem maak. En hij heeft inderdaad veel producten. Rond de 100.
 
Tja, dan zul je toch met databases moeten gaan werken en ik denk dat dat een beetje te hoog gegrepen is.:confused:
En ik denk dat je je programma zélf wilt schrijven.

Ik raad je aan wat VB tutorials op te zoeken en het op een later tijdstip te proberen.
 
Ik denk dat het voor nu het makkelijkst is om Joz zijn codes te gebruiken/een beetje aan te passen... Anders moet je nu weer (opnieuw) beginnen met het schrijven van je eigen code, waarvan ik denk dat het nog iets te hoog gegrepen is...

En ik denk dat over deze dingen vrij veel op internet te vinden is... Google het, dan heb je grote kans dat je goede dingen tegenkomt waarvan wij denken dat je dat al weet...

Succes!


[edit]
Volgens mij zitten in Joz zijn voorbeeld eigenlijk alle codes die je nodig hebt... Dus dan kan je toch makkelijk overstappen naar een treeview?
[/edit]
[edit]
@Joz: Als je vaker eenzelfde gerecht/product toevoegt, dan loopt de teller niet op, maar dan komt die eronder te staan... Misschien ervoor zorgen dat de teller oploopt?:p
[/edit]

[edit]
Ik heb er nu een code voor gemaakt:
Code:
    Private Sub Button2_Click() Handles Toevoegen.Click
        Try
            If Not TreeView1.SelectedNode Is Nothing Then
                If TreeView1.SelectedNode.Nodes.Count = 0 Then
                    For Each i As ListViewItem In ListView1.Items
                        If i.SubItems(1).Text.Contains(TreeView1.SelectedNode.Text & " (") Then
                            Dim NItem As String = i.SubItems(1).Text
                            NItem = NItem.Replace(TreeView1.SelectedNode.Text & " (", "")
                            NItem = NItem.Replace("x)", "")
                            Dim Aantal As Integer = CInt(NItem) + CInt(NumericUpDown1.Value)
                            Dim NItem2 As String = Nothing
                            NItem2 = i.SubItems(1).Text.Replace("(" & NItem & "x)", "(" & Aantal & "x)")
                            i.SubItems(1).Text = NItem2

                            Dim Prijs3 As Double = CDbl(Label6.Text / NumericUpDown1.Value)
                            Prijs3 = Prijs3 * Aantal
                            i.SubItems(2).Text = "€" & Prijs3.ToString("F").Replace(".", ",")

                            ''//optellen
                            Dim prijs2 As Double = 0, tempPrijs2 As Double = 0
                            For Each Item As ListViewItem In ListView1.Items
                                Double.TryParse(Item.SubItems(2).Text.TrimStart("€"), tempPrijs2)
                                prijs2 += tempPrijs2
                            Next
                            Label1.Text = "Totaal: €" & prijs2.ToString("F").Replace(".", ",")
                            Exit Sub
                        End If
                    Next

                    Dim lvItem As New ListViewItem(TreeView1.SelectedNode.Parent.Text)
                    lvItem.SubItems.AddRange({TreeView1.SelectedNode.Text & " (" & NumericUpDown1.Value.ToString & "x)", Label6.Text})
                    ListView1.Items.Add(lvItem)
                    ''//optellen
                    Dim prijs As Double = 0, tempPrijs As Double = 0
                    For Each Item As ListViewItem In ListView1.Items
                        Double.TryParse(Item.SubItems(2).Text.TrimStart("€"), tempPrijs)
                        prijs += tempPrijs
                    Next
                    Label1.Text = "Totaal: €" & prijs.ToString("F").Replace(".", ",")
                    Exit Sub


                End If
            End If

            MsgBox("Selecteer alstublieft een gerecht.", 48 + 4096, Me.Text)
        Catch ex As Exception
            MsgBox(ex.Message, 16 + 4096, Me.Text)
        End Try
    End Sub
Dit moet dus bij het toevoegen...


Met de wissen knop wis je dan nog wel alle tegelijk, maar als dat ook nog moet dan kan je even terug kijken naar de codes die ik je eerder gegeven had, daartussen zat ook zoiets. Die kan je dan aanpassen.
[/edit]
 
Laatst bewerkt:
@MartinJM: Klopt inderdaad! Handige toevoeging :)
 
Nog een beetje vergeten erbij toe te voegen: Als je bv een hoofdgerecht en een nagerecht met dezelfde naam hebt, dan zullen die wel bij elkaar opgeteld worden. Is de prijs anders, dan zal de prijs van het laatst toegevoegd gerecht gebruikt worden...

Volgens mij zou het met deze opzet (die van Joz) ook mogelijk zijn om daar ook een onderscheid tussen te maken, maar ik denk dat het zo wel voldoende is...

MartinJM
 
Het gaat niet over alleen die gangen, maar over alle gangen... Als er twee gerechten (of dranken) zijn met dezelfde naam, dan zullen deze bij elkaar opgeteld worden. Ook zal de prijs niet kloppen als de twee gerechten verschillende prijzen hebben.

Maar even terugkomend op een eerdere post van jou: Wil je nog doorgaan met een listview of ga je toch gebruik maken van een treeview? Als je toch een listview wilt, dan zullen alle codes van Joz nog omgebouwd moeten worden...

MartinJM
 
MartinJM zei:
Maar even terugkomend op een eerdere post van jou: Wil je nog doorgaan met een listview of ga je toch gebruik maken van een treeview? Als je toch een listview wilt, dan zullen alle codes van Joz nog omgebouwd moeten worden...

Ja, inderdaad. En daar gaat best nog wel wat tijd in zitten...

En ik denk ook niet dat een ListView nou per se makkelijker is voor een kassa.
Hoe laat je het programma trouwens communiceren met de productscanner? En met de bonnetjesprinter? :confused:
 
Het gaat niet over alleen die gangen, maar over alle gangen... Als er twee gerechten (of dranken) zijn met dezelfde naam, dan zullen deze bij elkaar opgeteld worden. Ook zal de prijs niet kloppen als de twee gerechten verschillende prijzen hebben.

Maar even terugkomend op een eerdere post van jou: Wil je nog doorgaan met een listview of ga je toch gebruik maken van een treeview? Als je toch een listview wilt, dan zullen alle codes van Joz nog omgebouwd moeten worden...

MartinJM
De (onderliggende) basis opzet zou je kunnen wijzigen zodat het switchen van treeview of listview or wat dan ook minimaal is. UI controls zijn voor het laten zien van de data, niet voor massa opslag :p

Ook gelijke namen zou geen probleem moeten zijn zolang je een uniek ID gebruikt per product. Het zelfde uiteraard voor de bediende, wat zou je doen als er twee Jan Janssen’s werken. ;)



Als dit daadwerkelijk voor een supermarkt zou worden dat kom je er niet onderuit met een database te werken. Ook al zie ik niet wat voor 'supermarkt' maar 100 producten zou hebben. Een tankstation heeft al snel 500 verschillende producten. En niet te vergeten dat alles een stuk complexer gaat worden met dingen zoals BTW, korting, producten retour, verkochte producten bijhouden, inkoop prijzen, aanbiedingen, dagrapporten etc. Ook zou je waarschijnlijk je applicatie moeten splitsen in 2. Een voor op de kassa’s, en een voor het beheer.

Bovendien is dit het 'test mijn programma' forum, niet het 'maak mijn programma voor mij' forum. De eerste 25 posts waren nog wel van toepassing maar daarna is het meer een persoonlijke helpdesk geworden voor de basis van programmeren.

Misschien specifieke problemen posten in het VB.NET vragen forum? Anders wordt alles ook zo moeilijk te volgen.
 
ik maak er een treeview van en dan gebruik ik die code's en dan is het klaar.
 
Vragen over de Ober-knoppen:
- in welke trance moeten die code's komen voor de Verwijder/Wijzig/Toevoeg-knoppen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan