Neues Kassensystem Problem (DataGridView)

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von killahiraner.

    Neues Kassensystem Problem (DataGridView)

    Hallo Leute,

    ich habe heute angefangen ein neues Kassensystem Programm zu erstellen.

    Ich habe eine Ide, die ich schon bei anderen Programmen gesehen habe.

    Unzwar sieht meine DataGridView Datenbank so aus:


    Artikel Preis Bestand
    Cola 1,50 10
    Fanta 1,50 10
    ____________________


    Ich möchte, dass wenn ich einen Artickel in der DataGridView Tabelle eintrage, ein Button in der Form1 Erstellt wird, der Cola Heißt und wenn ich Darauf klicke
    in der Listbox1
    n
    Cola 1,50 €
    einträgt.

    Ich hoffe ihr versteht was ich meine Ich möchte es Automatesieren so das fals neue Artikel eingetragen werden ich nichts mehr machen muss. :)

    Ich danke schonmal für eure Hilfe
    Sollte über das Event "RowsAdded" des DataGridView funktionieren. Erstellst darin einfach 'n neuen Button, weißt ihm eine Funktion mit AddHandler zu und schreibst innerhalb dieser Funktion die Werte in die Listbox.

    Edit: Hab mal ein bisschen rumprobiert und "RowsAdded" scheint mir keine gute Lösung, weil eine neue Row erstellt wird, noch bevor der erste Buchstabe in die Zelle geschrieben wird.
    Allerdings funktioniert es mit "RowLeave" ziemlich gut.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „lordknoblauch“ ()

    hey danke das du mir hilfst nur ganz habe ich das aber nicht verstanden.

    wäre cool wenn du mir ein code beispiel zeigst.

    ich glaube aber auch, das du mich falsch verstanden hast.

    ich möchte mir das button erstellen ersparen sodass wenn mann in der datagridview was.einträgt automatisch buttons erstellt werden

    danke schonmal für deine hilfe
    So habe ich es auch verstanden.

    Du kannst ja Buttons auch dynamisch erstellen. Leg einfach eine List(Of Button) an und füge mit jedem Eintrag einen Button hinzu. Wenn du dann .Size, .Location und .Text zugewiesen hast, weist du dem Button noch über AddHandler eine Funktion zu.

    Zum Schluss musst du nur den den entsprechenden Button der Form hinzufügen.

    VB.NET-Quellcode

    1. Dim buttons As New List(Of Button)
    2. buttons.Add(New Button)
    3. With buttons(buttons.Count - 1)
    4. .Location = New Point(x, y)
    5. .Size = New Size(75, 23)
    6. .Text = "Text"
    7. AddHandler .Click, AddressOf Funktion
    8. Me.Controls.Add(buttons(buttons.Count - 1))
    9. End With
    Hey lordknoblauch,

    dass sieht ja schon mal gut aus nur noch ein paar fragen kleine fragen



    1. Wo schreibe ich den code hin? in meine Form wo die Datagridview ist oder Wo die Buttons erscheinen sollen?

    2. Ich sehe da nichts von DataGridView wo schreibe ich den jetzt hin das er den Button namen aus Zeile Artickel verwenden soll und den Preis aus Zeile Preis?

    3. Ich checke das mit der funktion und der Location nicht Ganz. Zur Location ich kann ja eine Location angeben doch ich will ja nicht dass die buttons immer übereinander stehen sondern nebeneinander wenn er dann zum Rand ankommt eine spalte tiefer geht.

    und Funktion musst du mir noch mal erklären wenn es dir nix ausmacht oder so ein Visualbasic Beispiel währe auch ganz nett.

    Vielen vielen dank :)
    1. Wo schreibe ich den code hin? in meine Form wo die Datagridview ist oder Wo die Buttons erscheinen sollen?

    ..dort wo du deine einträge in DGV erstellst

    2. Ich sehe da nichts von DataGridView wo schreibe ich den jetzt hin das er den Button namen aus Zeile Artickel verwenden soll und den Preis aus Zeile Preis?

    Zeile auslesen und ausgelesene Text dynamischen button zuweisen


    Ich checke das mit der funktion und der Location nicht Ganz.

    schon mal was von kordinaten system gehört...
    Hey SystemUnknow,

    danke schonmal, dass du mir hilfst


    also zu 1.

    VB.NET-Quellcode

    1. Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
    2. End Sub

    Da eintragen oder eher da?

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. End Sub


    zu 2. Ein Codebeispiel würde mir sehr helfen :)

    zu 3. ich weiß ja die Kordinaten aber meine Frage war, wenn ich den button die Kordinaten mitteile wird er doch die buttons immer übereinander legen oder nicht?

    Ich würde mich sehr über ein Codebeispiel Freuen

    Danke euch :)


    Freue mich auf Mehr infos

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „killahiraner“ ()

    Zu 1. und 2.

    VB.NET-Quellcode

    1. Dim buttons As New List(Of Button) 'Button-List anlegen
    2. Private Sub DGV_RowLeave(ByVal sender As Object, ByVal e As EventArgs) Handles DGV.RowLeave
    3. buttons.Add(New Button) 'Neuen Button zur List hinzufügen
    4. With buttons(buttons.Count - 1) 'Die Werte für den letzten Button in der Liste festlegen
    5. '...
    6. .Location = New Point((((buttons.Count - 1) Mod 3) * 83) + 12, CInt((buttons.Count - 2) / 3) * 30 + 256) 'Position für den Button festlegen, in einem Raster von 3 Spalten mal x Zeilen
    7. AddHandler .Click, AddressOf meine_Funktion 'Dem Button.Click-Event eine Funktion zuweisen
    8. End With
    9. Me.Controls.Add(buttons(buttons.Count - 1)) 'Den letzten Button auf der Form erstellen
    10. End Sub
    11. Private Sub meine_Funktion(ByVal sender As Object, ByVal e As EventArgs)
    12. ListBox1.Items.Add(DGV.Rows(Row).Cells(Column).Value.ToString) 'Wert aus Reihe Row und Spalte Column in die Listbox eintragen
    13. End Sub


    Zu 3.
    Es gibt ja noch sowas wie Variablen. Du erinnerst dich? Das waren so Werte, die man zur Laufzeit ändern konnte ;)

    Den Rest wirst du selber machen müssen, wär ja sonst langweilig, nech? :thumbsup:

    Läuft ja ganz gut

    Hey also es Läuft echt gut nur ein paar probleme habe ich noch.

    zum ersten Problem:


    VB.NET-Quellcode

    1. ListBox1.Items.Add(DataGridView1.Rows(0).Cells(0).Value.ToString)


    So jetzt wird die erste zeile ausgewählt die heißt bei mir Cola aber daneben steht noch der Preis wie füge ich das jetzt nebeneinander ein?

    Also Cola 1,50€??

    egal was ich versuche es kommt nur untereinander und nicht nebeneinander.

    und mein zweites Problem:


    Jeder Button nimmt seine angaben aus

    VB.NET-Quellcode

    1. ListBox1.Items.Add(DataGridView1.Rows(0).Cells(0).Value.ToString)


    wie mache ich das, dass der Zweite button

    VB.NET-Quellcode

    1. ListBox1.Items.Add(DataGridView1.Rows(1).Cells(0).Value.ToString)

    so aussieht und der dritte:

    VB.NET-Quellcode

    1. ListBox1.Items.Add(DataGridView1.Rows(2).Cells(0).Value.ToString)

    ??

    Ich hoffe du verstehst was ich meine.


    Egal was ich mache es will nicht klappen :)


    Danke dir das du so viel gedult mit mir hast 8-) :D
    Zur ersten Frage: Packst einfach die beiden Werte zusammen als Wert. Zum Beispiel so:

    VB.NET-Quellcode

    1. ListBox1.Items.Add(DataGridView1.Rows(0).Cells(0).Value.ToString & vbTab & DataGridView1.Rows(0).Cells(1).Value.ToString)


    und zur zweiten Frage: Du weißt doch bestimmt, was eine Schleife ist.


    Option A:
    Du durchläufst mit jedem Event die Einträge und prüfst, welche schon vorhanden sind bzw. noch nicht vorhanden sind.


    Option B:
    Du erstellst direkt in dem Event den Button und beziehst den Titel aus der vorletzten Zeile des DGV.

    VB.NET-Quellcode

    1. DataGridView1.Rows(DataGridView1.Rows.Count - 2).Cells(0).Value.ToString
    2. ' "-2 weil ja mit der ersten Eingabe in eine Zeile bereits eine neue Zeile angelegt wird

    hmm oh maaaaan

    Ohman also 2 Fehler habe ich jetzt.

    1.wenn ich dem button ein text gebe dann gibt er mir Beim laden der DGV Diese Fehlermeldung

    VB.NET-Quellcode

    1. .Text = DataGridView1.Rows(DataGridView1.Rows.Count - 2).Cells(0).Value.ToString


    "Der Index lag außerhalb des Bereichs. Er muss nicht negativ und kleiner als die Auflistung sein.
    Parametername: index"

    Doch wenn ich den Text lösche, kann ich die DGV Laden doch habe meine buttons Keine Namen Mehr

    2. ich habe nix am code veändert doch jetzt nimmt er sich zwar dich daten vom letzden artickel, doch alle buttons haben dann die eigenschaften vom letzden artickel

    d.h cola 1,50
    Fanta1,50

    alle Buttons Heißen dann Fanta 1,50.


    Das schlimme ist, dass es vorher ging 8|

    hier mein Code

    VB.NET-Quellcode

    1. Public Class Form2
    2. Dim buttons As New List(Of Button) 'Button-List anlegen
    3. Private Sub DGV_RowLeave(ByVal sender As Object, ByVal e As EventArgs) Handles DGV.RowLeave
    4. buttons.Add(New Button) 'Neuen Button zur List hinzufügen
    5. With buttons(buttons.Count - 1) 'Die Werte für den letzten Button in der Liste festlegen
    6. '...
    7. .Location = New Point((((buttons.Count - 1) Mod 3) * 83) + 12, CInt((buttons.Count - 2) / 3) * 30 + 256) 'Position für den Button festlegen, in einem Raster von 3 Spalten mal x Zeilen
    8. AddHandler .Click, AddressOf meine_Funktion 'Dem Button.Click-Event eine Funktion zuweisen
    9. End With
    10. Form1.Controls.Add(buttons(buttons.Count - 1)) 'Den letzten Button auf der Form erstellen
    11. End Sub
    12. Private Sub meine_Funktion(ByVal sender As Object, ByVal e As EventArgs)
    13. Form1.ListBox1.Items.Add(DGV.Rows(DGV.Rows.Count - 2).Cells(0).Value.ToString & vbTab & DGV.Rows(0).Cells(1).Value.ToString) 'Wert aus Reihe Row und Spalte Column in die Listbox eintragen
    14. End Sub
    15. Private Sub DatenbankToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DatenbankToolStripMenuItem.Click
    16. Me.Visible = True
    17. End Sub
    18. Private Sub KasseToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KasseToolStripMenuItem.Click
    19. Me.Visible = False
    20. Form1.Visible = True
    21. End Sub
    22. Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
    23. End
    24. End Sub
    25. End Class


    Fals es so nicht Klappen tut,
    kann es es ja auch so machen, Dass wenn ich was in die DGV eintrage und ein Button daneben Klicke, dass dann ein button erstellt wird, dass zweite daneben, dass dritte daneben usw.

    Danke schonmal für eure hilfe :)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „killahiraner“ ()