ComboBox - Integer   otázka

VB.NET

Dobrý den,

jsem úplný amatér takže tvořím a zároveň se tak trochu učím ale nastala nouze a

potřebuji si do práce vytvořit kvůli úspoře času a peněz. Něco jako kalkulačku autodopravy. Mám vlastně okno s ComboBox-ama v jednom mám "města" kam půjde zásilka v druhém "Typ zásilky" a ve třetím "Počet zásilek". Mám tedy vytvořený ty ComboBoxi s "městy", "typy", atp. a potřeboval bych k nim přiřadit číselný hodnoty což asi mám ale nevím jestli správně. A nadále bych potřeboval ty hodnoty vynásobit mezi sebou. Ale nedaří se mi to. Tak jestli by byl někdo tak hodný a ukázal co a jak.

Dík.

P.S: Příklad:

V ComboBoku1 vyberu např. Karlovy Vary

V ComboBoxu3 vyberu např. Paleta

V ComboBoxu4 vyberu např. 2

a potřebuji aby mi to napsalo např. do TextBoxu výsledek

Public Class Autodoprava

    Private Sub Autodoprava_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'města
        Me.ComboBox1.Items.Add("Karlovy Vary")
        Me.ComboBox1.Items.Add("Plzeň")
        Me.ComboBox1.Items.Add("Praha")

        'Hmotnost
        Me.ComboBox2.Items.Add("do 1000 kg")
        Me.ComboBox2.Items.Add("1000 - 3000 kg")
        Me.ComboBox2.Items.Add("3000 - 4400 kg")
        Me.ComboBox2.Items.Add("3000 - 4500 kg")
        Me.ComboBox2.Items.Add("4500 - 9000 kg")
        Me.ComboBox2.Items.Add("9000 - 14800 kg")
        Me.ComboBox2.Items.Add("14800 - 24000 kg")

        'Typ zásilky
        Me.ComboBox3.Items.Add("Balík")
        Me.ComboBox3.Items.Add("Paleta")
        Me.ComboBox3.Items.Add("Půl paleta")
        Me.ComboBox3.Items.Add("Double paleta")
        Me.ComboBox3.Items.Add("Markýza")
        Me.ComboBox3.Items.Add("Krb")

        'Počet kusů
        Me.ComboBox4.Items.Add("1")
        Me.ComboBox4.Items.Add("2")
        Me.ComboBox4.Items.Add("3")
        Me.ComboBox4.Items.Add("4")
        Me.ComboBox4.Items.Add("5")
        Me.ComboBox4.Items.Add("6")
        Me.ComboBox4.Items.Add("7")
        Me.ComboBox4.Items.Add("8")
        Me.ComboBox4.Items.Add("9")
        Me.ComboBox4.Items.Add("10")
        Me.ComboBox4.Items.Add("11")
        Me.ComboBox4.Items.Add("12")
        Me.ComboBox4.Items.Add("14")
        Me.ComboBox4.Items.Add("15")
        Me.ComboBox4.Items.Add("16")
        Me.ComboBox4.Items.Add("17")
        Me.ComboBox4.Items.Add("18")
        Me.ComboBox4.Items.Add("19")
        Me.ComboBox4.Items.Add("20")
        Me.ComboBox4.Items.Add("21")
        Me.ComboBox4.Items.Add("22")
        Me.ComboBox4.Items.Add("23")
        Me.ComboBox4.Items.Add("24")
        Me.ComboBox4.Items.Add("25")
        Me.ComboBox4.Items.Add("26")
        Me.ComboBox4.Items.Add("27")
        Me.ComboBox4.Items.Add("28")
        Me.ComboBox4.Items.Add("29")
        Me.ComboBox4.Items.Add("30")
        Me.ComboBox4.Items.Add("31")
        Me.ComboBox4.Items.Add("32")
        Me.ComboBox4.Items.Add("33")
        Me.ComboBox4.Items.Add("34")


    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        Dim a As Integer = ComboBox1.SelectedIndex

        Select Case a
            'Hodnoty jednotlivých měst (km)
            Case 0
                Dim a1 As Integer = 46
                'karlovy vary
            Case 1
                Dim a2 As Integer = 110
                'plzen
            Case 2
                Dim a3 As Integer = 212
                'praha
        End Select

    End Sub


    Private Sub ComboBox3_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox3.SelectedIndexChanged
        Dim b As Integer = ComboBox3.SelectedIndex

        Select Case b
            'cena za jednu zásilku
            Case 0
                Dim b1 As Integer = 58
                'Balík
            Case 1
                Dim b2 As Integer = 430
                'Paleta
            Case 2
                Dim b3 As Integer = 250
                'Půl paleta
            Case 3
                Dim b4 As Integer = 850
                'Double paleta
            Case 4
                Dim b5 As Integer = 150
                'Markýza
            Case 5
                Dim b6 As Integer = 250
                'Krb
        End Select
    End Sub

    Private Sub ComboBox4_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox4.SelectedIndexChanged
        Dim c As Integer = ComboBox4.SelectedIndex

        Select Case c
            'Počet zásilek
            Case 0
                Dim c1 As Integer = 1
            Case 1
                Dim c2 As Integer = 2
            Case 2
                Dim c3 As Integer = 3
            Case 3
                Dim c4 As Integer = 4
            Case 4
                Dim c5 As Integer = 5
            Case 5
                Dim c6 As Integer = 6
            Case 6
                Dim c7 As Integer = 7
            Case 7
                Dim c8 As Integer = 8
            Case 8
                Dim c9 As Integer = 9
            Case 9
                Dim c10 As Integer = 10
            Case 10
                Dim c11 As Integer = 11
            Case 11
                Dim c12 As Integer = 12
            Case 12
                Dim c13 As Integer = 13
            Case 13
                Dim c14 As Integer = 14
            Case 14
                Dim c15 As Integer = 15
            Case 15
                Dim c16 As Integer = 16
            Case 16
                Dim c17 As Integer = 17
            Case 17
                Dim c18 As Integer = 19
            Case 18
                Dim c19 As Integer = 19
            Case 19
                Dim c20 As Integer = 20
            Case 20
                Dim c21 As Integer = 21
            Case 21
                Dim c22 As Integer = 22
            Case 22
                Dim c23 As Integer = 23
            Case 23
                Dim c24 As Integer = 24
            Case 24
                Dim c25 As Integer = 25
            Case 25
                Dim c26 As Integer = 26
            Case 26
                Dim c27 As Integer = 27
            Case 27
                Dim c28 As Integer = 28
            Case 28
                Dim c29 As Integer = 29
            Case 29
                Dim c30 As Integer = 30
            Case 30
                Dim c31 As Integer = 31
            Case 31
                Dim c32 As Integer = 32
            Case 32
                Dim c33 As Integer = 33
            Case 33
                Dim c34 As Integer = 34
        End Select
        
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Pokus vynásobyt jednotlivé hodnoty v ComboBoxech vynásobyt
        Dim a As Integer
        Dim b As Integer
        Dim c As Integer
        Dim d As Integer = a * b * c
        TextBox2.Text = CStr(d)





    End Sub
End Class

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jedu to ve Visual Basicu 2010 Express

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak nejdříve bych doporučil si projít kurz pro začátečníky, třeba zde na webu.

Jinak zkuste používat objekty.

Př.:

Třída pro město:

Public Class Mesto

    Public Nazev As String
    Public Vzdalenost As Double

    Public Sub New(nazev As String, vzdalenost As Double)
        Me.Nazev = nazev
        Me.Vzdalenost = vzdalenost
    End Sub

    'přepisuji funkci ToString protože chci, aby byly vydět v comboboxu názvy měst, ne název třídy

    'nebo můžete do třídy přidat veřejné vlastnosti a v comboboxu pak nastavit vlastnost displaymember (určitě tak něco takového je)
    Public Overrides Function ToString() As String
        Return Me.Nazev
    End Function

End Class

Třída pro zásilku:

Public Class Zasilka

    Public Typ As String
    Public Cena As Double

    Public Sub New(typ As String, cena As String)
        Me.Typ = typ
        Me.Cena = cena
    End Sub

    Public Overrides Function ToString() As String
        Return Typ
    End Function

End Class

Formulář

    ''' <summary>
    ''' vytvoření objektů a přidání do controlů
    ''' </summary>
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load

        'Objekty mesta
        Dim mesta = {New Mesto("Karlovy Vary", 46), _
                     New Mesto("Plzeň", 110), _
                     New Mesto("Praha", 212)}

        'Objekty zásilky
        Dim zasilky = {New Zasilka("Balík", 58), _
                       New Zasilka("Paleta", 430), _
                       New Zasilka("Půl paleta", 250), _
                       New Zasilka("Double paleta", 850), _
                       New Zasilka("Markýza", 150), _
                       New Zasilka("Krb", 250)}

        'Naplnění comboboxu pocet kusů
        For i As Integer = 1 To 34
            ComboBoxPocetKusu.Items.Add(i)
        Next
        ComboBoxPocetKusu.SelectedIndex = 0

        'Naplnění měst do comboboxu
        ComboBoxMesta.Items.AddRange(mesta)
        ComboBoxMesta.SelectedIndex = 0

        'Naplnění zásilek do comboboxu
        ComboBoxZasilka.Items.AddRange(zasilky)
        ComboBoxZasilka.SelectedIndex = 0
    End Sub

    ''' <summary>
    ''' Výpočet
    ''' </summary>
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        'Vyčtení hodnot z comboboxů
        'neznám metodiku výpočtu a nechi nad ní přemýšlet, tak jak píšete pouze vynásobení. Není zde použita hmotnost.
        Dim mesto = DirectCast(ComboBoxMesta.SelectedItem, Mesto)
        Dim zasilka = DirectCast(ComboBoxZasilka.SelectedItem, Zasilka)
        Dim pocetKusu = DirectCast(ComboBoxPocetKusu.SelectedItem, Integer)

        'vynásobení a vypsání do textboxu

        TextBox1.Text = mesto.Vzdalenost * zasilka.Cena * CDbl(pocetKusu)

    End Sub

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji, moc mi to pomohlo.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den, to jsem ještě já úplný amatér

měl bych ještě jeden dotaz jak udělám aby mi vyskočila hláška že počet kusů neodpovídá parametrům vozidla.

Např. když v ComboBoxPocetKusu vyberu 10 kusů

a v ComboBoxParametr vyberu Ford Transit - max 4 EU palety

tak aby mi to vyhodilo okno že počet kusů neodpovídá parametrům vozidla.

Sice jsem si procházel kurz "Podmínky a operátory" pana Hercega tady na stránkách ale nějak moc jsem tomu neporozuměl.

Tak se radši ptám

Public Class Autodoprava

    Private Sub Autodoprava_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim mesta = {New Mesto("Karlovy Vary", 46), _
                     New Mesto("Plzeň", 110), _
                     New Mesto("Praha", 212)}

        Dim zasilky = {New Zasilka("Balík", 58), _
                       New Zasilka("Paleta", 430), _
                       New Zasilka("Půl paleta", 250), _
                       New Zasilka("Double paleta", 850), _
                       New Zasilka("Markýza", 150), _
                       New Zasilka("Krb", 250)}

        Dim parametry = {New Hmotnost("FORD TRANSIT - max 4 EU palety do 1000 kg", 17), _
                         New Hmotnost("RENAULT MIDLINER - max 15 EU palet od 1000 kg do 3000 kg", 28), _
                         New Hmotnost("RENAULT MIDLINER - max 17 EU palet od 3000 kg do 4500 kg", 30), _
                         New Hmotnost("VOLVO FL - max 18 EU palet od 3000 kg do 4400 kg", 30), _
                         New Hmotnost("RENAULT PREMIUM - max 23 EU palet od 4500 kg do 9000 kg", 34), _
                         New Hmotnost("VOLVO FM 12 - max 23 EU palet od 9000 kg do 14800 kg", 40), _
                         New Hmotnost("VOLVO FH 12 - max 34 EU palet od 14800 kg do 24000 kg", 50), _
                         New Hmotnost("kamion VOLVO FH 12 - max 34 EU palet od 14800 kg do 24000 kg", 50)}

        For i As Integer = 1 To 34
            ComboBoxPocetKusu.Items.Add(i)
        Next
        ComboBoxPocetKusu.SelectedIndex = 0

        ComboBoxMesta.Items.AddRange(mesta)
        ComboBoxMesta.SelectedIndex = 0

        ComboBoxZasilka.Items.AddRange(zasilky)
        ComboBoxZasilka.SelectedIndex = 0

        ComboBoxParametr.Items.AddRange(parametry)
        ComboBoxParametr.SelectedIndex = 0
    End Sub


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim mesto = DirectCast(ComboBoxMesta.SelectedItem, Mesto)
        Dim zasilka = DirectCast(ComboBoxZasilka.SelectedItem, Zasilka)
        Dim pocetKusu = DirectCast(ComboBoxPocetKusu.SelectedItem, Integer)
        Dim cenaZaKilometr = DirectCast(ComboBoxParametr.SelectedItem, Hmotnost)

        TextBox2.Text = zasilka.Cena * CDbl(pocetKusu) & " Kč"
        TextBox1.Text = mesto.Vzdalenost * cenaZaKilometr.Cena_za_km & " Kč"

    End Sub
End Class

Public Class Mesto
    Public Nazev As String
    Public Vzdalenost As Double

    Public Sub New(ByVal nazev As String, ByVal vzdalenost As Double)
        Me.Nazev = nazev
        Me.Vzdalenost = vzdalenost
    End Sub
    Public Overrides Function ToString() As String
        Return Me.Nazev
    End Function
End Class

Public Class Zasilka
    Public Typ As String
    Public Cena As Double

    Public Sub New(ByVal typ As String, ByVal cena As String)
        Me.Typ = typ
        Me.Cena = cena
    End Sub

    Public Overrides Function ToString() As String
        Return Typ
    End Function
End Class

Public Class Hmotnost
    Public kg As String
    Public Cena_za_km As Double

    Public Sub New(ByVal kg As String, ByVal cena_za_km As String)
        Me.kg = kg
        Me.Cena_za_km = cena_za_km
    End Sub

    Public Overrides Function ToString() As String
        Return kg
    End Function

   
End Class
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Po zběžném přečtení mě napadá toto:Třídu Hmotnost předělat na třídu vozidlo cca takto:

nutno dodělat konstruktor

Public Class Vozidlo
    Public Typ As String 'Popis Vozidla
    Public MaxEU As integer 'Maximalni pocet palet
    Public MaxKg As Integer 'Maximalni Vaha  
    Public Cena_za_km As Double

    Public Sub New(ByVal kg As String, ByVal cena_za_km As String)
        Me.kg = kg
        Me.Cena_za_km = cena_za_km
    End Sub

    Public Overrides Function ToString() As String
        Return Typ & " Max EU " & MaxEU.Tostring & " Max Kg " & MaxKg.Tostring
    End Function 
End Class

případně doplnit další paramtry a v Button1_Click doplnit kontrolu platného výběru s vyvoláním hlášky

MsgBox(......)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den, prosim vás, nevím si rady: jak napíšu podmínku - když je v comboboxu1 vybrána nějaká hodnota, tak v comboboxu2 je na výběr pouze daná hodnota.

Děkuji.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback