Labels und Buttons in ein Panel erstellen und entfernen

  • VB.NET

Es gibt 74 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Also Ich finde die Dataset methode nicht so toll, ich würde lieber so fortfahren wie bisher mit @VaporiZed der ansatz was sehr gut und es läuft ja auch alles soweit nur das eine Problem das er immer den letzten Kunden abrechnet von der Summe her, was ja logisch ist. Da ja immer nur der letzte Kunde in der Variablen gespeichert wird
    Das ganze artet ohne Objektorientierung in ganz furchtbaren Spaghetticode aus. Ich war selbst am Anfang in einer ähnlichen Situation. Habe eine Datenbankanwendung ohne Objektorientierung geschrieben, in ähnlichem
    Stil wie du jetzt. Dann hab ich mal 2 Wochen Pause gemacht und konnte danach meinen eigenen Code weder richtig lesen noch verstehen. Spricht es war eine Todgeburt da 0 Wartbar... Projekt wurde dann leider beerdigt.

    Hoffe du verstehst was ich dir damit sagen will.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Hi @mrMo danke für dein Text, klar verstehe ich dich. Hatte bei anderen Projekten das auch schon kennengelernt da hatte ich über 90.000 Zeilen und hab nix mehr gefunden ... am ende Close...

    Dies ist ja nur ein Test Projekt und hat nicht viele Zeilen und besteht aus vielen extra Classes.vb damit ich das übernehmen von Klassen lerne, dazu gehören auch events, nur da harpert es ... es läuft soweit aber halt nicht richtig :/

    Dataset würde ich ehr in einen nächsten Projekt erneut versuchen zu lernen da es nach meiner sicht sehr komplex ist. Dann vielleicht sowas wie einen Kundendatenbank oder so...
    andere variante .... kann mir sowas nicht weiterhelfen, das ich es erst ganicht in ein UserControl erstelle sondern per New Button & New Label in ein FlowLayoutPanel?

    Deklaration

    VB.NET-Quellcode

    1. Private WithEvents buton As New Button
    2. Private WithEvents lab As New Label
    3. Dim i As Integer


    Dies bei Kundenerstellen() (Ist momentan nur der Button)

    VB.NET-Quellcode

    1. For i = 0 To 10
    2. buton = New Button
    3. buton.Text = "kassieren"
    4. buton.Name = "Button " & i.ToString
    5. AddHandler buton.Click, AddressOf Abkassieren
    6. FlowLayoutPanel1.Controls.Add(buton)
    7. Next


    das bei Abkassieren()

    VB.NET-Quellcode

    1. Private Sub Abkassieren(sender As Object, e As EventArgs)
    2. Dim btn As Button = CType(sender, Button)
    3. Dim Str As String = btn.Text
    4. MessageBox.Show(Str)
    5. End Sub


    EDIT:

    Also das es z.b. dann so ist ohne For next

    VB.NET-Quellcode

    1. buton = New Button
    2. buton.Text = "kassieren " & i.ToString
    3. i += 1
    4. buton.Name = "Button " & i.ToString
    5. AddHandler buton.Click, AddressOf Abkassieren
    6. FlowLayoutPanel1.Controls.Add(buton)

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VBHunter“ ()

    spiel mal damit n bisken rum
    Dateien
    • WindowsApp1.zip

      (39,29 kB, 60 mal heruntergeladen, zuletzt: )
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Danke nochmal @VaporiZed das ist sehr gut geworden.

    Hast du vielleicht mal ein Beispiel wie ein Dataset aussehen würde wenn man sowas ähnliches macht, Artikel speicht und Kunden hat ... reicht auch nur eine schriftliche Vorgehensweise ...

    wie kann man es sowas machen das Produkte in einer eigenen Klasse sind und diese aber auch alle geladen werden zu start so wie du das gemacht hast

    So hast du es gemacht im Load der Form:

    VB.NET-Quellcode

    1. shopitems.Add(New item("Rosen", 2.99))


    und wenn ich dies jetzt in die item klasse packen würde dann so oder?

    VB.NET-Quellcode

    1. Dim Rosen As item= New item("Rosen", 2.99)


    nur wenn ich jetzt starte dann kommt ein fehler weil er ja die Produkte nicht findet. Wie bekomm ich es am anfang geladen.

    Ziel ist es das im load nicht 3000 mal Pro.Add(New item("Rosen", 2.99)) steht

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „VBHunter“ ()

    @VBHunter Was soll mit diesem Items passieren?
    Es ist nämlich ein riesen Unterschied, ob Du

    VB.NET-Quellcode

    1. shopitems.Add(New item("Rosen", 2.99))
    2. shopitems.Add(New item("Rosen", 2.99))
    oder

    VB.NET-Quellcode

    1. Dim Rosen As itemX = New item("Rosen", 2.99)
    2. shopitems.Add(itemX)
    3. shopitems.Add(itemX)
    Im ersten Beispiel gibt es zwei Instanzen gleichen Inhalts. Wenn Du eines änderst, bleibt das andere unverändert.
    Im zweiten Beispiel gibt es eine Instanz zwei Mal. Wenn Du ein Item änderst, ändert sich das zweite mit.
    Vielleicht machst Du da eine Tabelle, die beim Start des Programms eingelesen wird, die wäre dann auch unabhängig vom Programm änderbar.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Okay @RodFromGermany

    shopitems ist Private shopitems As New List(Of item)

    diese Item.vb beinhaltet

    VB.NET-Quellcode

    1. Public ReadOnly Property Description As String
    2. Public ReadOnly Property PricePerUnit As Double
    3. Public Sub New(Description As String, PricePerUnit As Double)
    4. Me.Description = Description
    5. Me.PricePerUnit = PricePerUnit
    6. End Sub


    so werden neue Produkte eingespeist wenn ich das Richtig verstehe ...

    Ich will nun das dies shopitems.Add(New item("Rosen", 2.99)) aus dem Load der Form verschwindet und in einer extra Class.vb landet oder in der Item.vb Klasse

    einfach nur das der Form_Load nicht so riesig wird bei z.b. 3000 Artikel
    @VBHunter Dann pack die Befüllung der Liste in einen separaten Thread, da wird die GUI nicht ausgebremst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VBHunter schrieb:

    einfach nur das der Form_Load nicht so riesig wird bei z.b. 3000 Artikel
    Geht es um 3000 verschiedene Artikel oder um 3000 identische Rosen?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    3000 verschiedene Artikel

    Kategorie: Blumen, Teigwaren, Zeitungen, etc. Jede Kategorie hat ca. 20-30 Artikel.

    Deshalb wollte ich es nochmal abtrennen statt gleich die Artikel im load zu haben ein Class.vb mit Kategorien z.b. Blumenliste, darin ist dann Rosen, Nelken etc ...

    Teigwarenliste, darin Toastbrot, Graubrot, etc....
    Ich hätte nicht gedacht, dass mein defätistischer Einwurf

    ErfinderDesRades schrieb:

    ... dann habe ich den Eindruck, dass hier ein Kassensystem entstehen soll ohne jedes geplante Datenmodell.
    Das wird noch mühsam werden...
    sich so eindrücklich bestätigen würde.
    Erfreulich, dass du dich immer ca. 20 posts später tatsächlich der Thematik annäherst - wenn auch über den Umweg selbstgebastelter Daten-Klassen.
    Wenn ich nochmal defätisieren darf: Ein Datenmodell aus selbstgebastelten Klassen ist für das Kassensystem, wie es hier absehbar bei rauskommt, unzureichend.
    Weil vermutlich wirste demnächst drauf kommen, dass zum Abrechnen eines Einkaufs eine Entität "AbrechnungsPosten" erforderlich ist, welche angibt, von welchem Artikel wieviel bei welchem Einkauf gekauft wurden.
    Und speziell diese Entität, die also auf 2 andere Entitäten verweist (nämlich Einkauf, Artikel) - so eine Entität ist mit selbstgebastelten Klassen nicht sinnvoll zu verwalten.
    Datenbänkerisch gesprochen: die Entität EinkaufPosten konstituiert eine m:n-Relation zwischen Einkauf und Artikel, und eine m:n-Relation ist nur in einem relationalen Datenmodell handhabbar, nicht in einem (nur hierarchischen) OOP-Datenmodell.

    Paar Tuts:
    Grundlagen: Relationale Datenmodellierung
    Datenverarbeitungs-Vorraussetzungen
    Ach guck - dieses Tut DataExpressions: Filter und berechnete Spalten im Dataset
    Geht zwar vorwiegend um DataExpressions, aber entwickelt wird das Tut u.a. am Beispiel eines Kassensystems "MiniKass" - das wäre also eine lauffähige Anregung, wie letztendlich dein Kassensystem auch ungefähr aussehen könnte.
    Okay danke,

    dann mach ich mich mal daran und werde versuchen das erneut irendwie in den Kopf zu bekommen ...

    Die "vier Views" hab ich ja schonmal nachgebaut aber noch nicht viel verstanden ... vielleicht jetzt
    Das mit dem Verstehen braucht etwas Zeit. Die Frage ist, ob Du alle Views immer und überall brauchst (nein, dem ist nicht so). Es geht erstmal darum, die Grundsätze des mit-dem-tDS-arbeiten zu verstehen. Statt dass Du Dir selber Klassen schreibst, erstellst Du diese einfacher mit dem tDS-Designer. Du kannst angeben, welche Eigenschaften eine Klasse/Tabelle haben soll und von welchem Typ die Eingenschaften sind. Der Vorteil des tDS ist u.a. auch, dass Du schnell Beziehungen zwischen den Datenklassen herstellen kannst, im Sinne von: "Es gibt im Shop mehrere Artikel, der Shop hat mehrere Kunden, ein Kunde kann mehrere Artikel (in seinem Einkaufskorb) haben", usw. Außerdem hilft Dir der Form-Designer auch dabei, die Klasseninstanzen/Tabelleninhalte relativ einfach anzuzeigen. Und Laden/Speichern ist auch superschnell und einfach mit nem tDS erledigt.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.