Elektroda.pl
Elektroda.pl
X
Relpol
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C++/VS - label1 = comboBox1 + comboBox2

bom109 22 Sty 2014 22:52 1203 10
  • #1 22 Sty 2014 22:52
    bom109
    Poziom 9  

    Witam.
    Mam problem w Visual Studio C++ 2008, chcę aby mój label1 wyświetlał sumę liczb z comboBoxa1 i comboBoxa2 a dokładniej chodzi mi o to że jak mam w comboBoxie1 item o nazwie "Pięć" a w comboBoxie2 item o nazwie "Osiem" to po naciśnięciu button1 w label1 wypisuje się wartość 13.
    Z góry dzięki za odpowiedź!

    0 10
  • Relpol
  • #2 23 Sty 2014 00:02
    rufek90
    Poziom 24  

    I z czym konkretnie ten problem? Co do tej pory zdziałałeś? Czego nie wiesz?
    Na pewno więcej osób będzie chętnych udzielić ci podpowiedzi, gdy zobaczą chociaż kawałek kodu :)

    0
  • #3 23 Sty 2014 09:05
    bom109
    Poziom 9  

    Tu mam kod przycisku "Dodaj" dla dwóch wartości jestem to w stanie zrobić na funkcji if ale jak mi dojdą kolejne wartości to będzie ciężko... Dlatego szukam jakiegoś łatwiejszego sposobu....

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0
  • Relpol
  • #4 23 Sty 2014 18:05
    rufek90
    Poziom 24  

    Nie programuję w c++, więc nie dam konkretnego kodu, ale według mnie musisz zrobić funkcję, która przyjmuje string (np. "jeden", "osiem") a zwraca int (np. 1, 8).

    Później na przycisku do obliczania robisz:

    wynik = mojafunkcja(tekst_z_textboxa1) + mojafunkcja(tekst_z_textboxa2);

    Jak w ten sposób spojrzysz na temat to powinien on wydać się łatwy w realizacji. Do tego będziesz mógł łatwo zamienić to na mnożenie, dzielenie itp - bo napisana przez ciebie funkcja sprawi, że będziesz operował na liczbach, a nie napisach.
    Według mnie jedno z niewielu słusznych wyjść.

    0
  • Pomocny post
    #5 23 Sty 2014 20:23
    marcinj12
    Poziom 40  

    Ja też w C++ nie programuję, ale są co najmniej dwa sposoby w jaki można to zrealizować w .NET:
    - jeżeli ułożenie liczb na liście odpowiada ich naturalnemu porządkowi (zero, jeden, dwa...),
    możesz wykorzystać właściwość combobox.SelectedIndex, coś w stylu:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    - sposób, który bym osobiście wykorzystał, to podpięcie z w zdarzeniu Load formy do comboBoxa listy dwuelementowych par klucz-wartość, np. KeyValuePair, Dictionary albo własna struktura, np.
    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    a potem dodawać wartości z comboBox1.SelectedValue rzutowany na int.

    0
  • #6 23 Sty 2014 21:04
    bom109
    Poziom 9  

    Niestety chyba przeceniłem swoje umiejętności bo z tego ostatniego kodu mało co rozumiem i niestety nie mam pojęcia jak to podpiąć do dwóch comboBox`ów, buttona który by dodawał te dwie wartości i labla wtóry by mi wyświetlił wartość:/

    0
  • Pomocny post
    #7 24 Sty 2014 12:28
    lukagrom
    Poziom 15  

    dodawanie dla zakresu od 0-10. Można porobić funkcje konwertujące stringi na pozostałe cyfry, ale chyba w tym zadaniu nie o to chodziło. "Nieeleganckie "if-else" dlatego, że dziwaczny typ String^ nie pozwala na korzystanie z instrukcji switch-case.

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0
  • #8 24 Sty 2014 15:59
    bom109
    Poziom 9  

    Dziękuje za ten kod jednak dodałem go do projektu gdzie mam dwa comboBoxy i label 1 ale program nie chce mi odpalić, podaje tu swój kod.

    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #9 24 Sty 2014 16:56
    lukagrom
    Poziom 15  

    Troche jest namieszane w deklaracjach funkcji, choćby te Form_Load nie tam gdzie ma być. Chyba najłatwiej będzie utworzyć nowy projekt, wrzucić jeden label i 2 combo-boxy.
    Kliknij dwa razy w formatkę, znajdziesz się w kodzie projektu i znajdź następującą frazę na górze:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    Pod tym wpisz deklaracje funkcji:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    Wróc do formy i ponownie klilknij dwu-krotnie znajdziesz się wewnątrz Form_Load i zapełnij to tak:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    Kliknij podwójnie w comboBox1 i wklep:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    To samo z drugim i pownno być git.
    Kod: cpp
    Zaloguj się, aby zobaczyć kod
    [/code]

    0
  • #10 24 Sty 2014 21:26
    bom109
    Poziom 9  

    Bardzo dziękuję za pomoc, kod mi ładnie działa ale nie wiem dlaczego ale ten kod mi nie chciał działać, ale co dziwne bez niego dobrze wszystko działa :)

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    Mam jeszcze jedno pytanie w jaki sposób zapisać to żeby dla comboBox1 a=="zero") wartosc=0 a już dla comboBox2 a=="zero") wartosc=15? Po prostu chdzi mi aby dla drugiego comboBoxa ten sam napis np"jeden" miał inną wartość.

    Wpadłem na pomysł żeby to rozwiązać tak jednak nie jestem pewien czy wg. dobrze myślę, oczywiście to jest tylko przykład wiem że brak w tym przykładzie logiki.
    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    0
  • #11 25 Sty 2014 10:56
    bom109
    Poziom 9  

    Dokładnie chodzi mi o to że w aplikacji chcę w sumie dodać wartości z 21 comboBoxów, w comboboxach mam 7 itemów, wyniki będą wypisywane w 7 lablach i w zależności który item w którym comboBoxie wybiorę to wartość zmienia się w innym lablu.
    Np. jeśli w combobox6 wybiorę item 4 to wzrasta o 0,33 label 4, a jeśli w combobox3 wybiorę item 7 to label7 zwiększa się o 1,88.
    W sumie chodzi o to że każdy comboBox ma inną wartość a w zależności który item wybiorę to ten label się zwiększa.

    0