logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

MFC Visual C++ Jak wypełnić list box'a oraz control list za pomocą tabeli.

ssss91 02 Cze 2011 19:48 2032 5
REKLAMA
  • #1 9570582
    ssss91
    Poziom 9  
    Posty: 12
    Ocena: 1
    Witam jestem studentem 1roku. Mam do napisania program w Visual studio za pomocą MFC który będzie bazą danych towarów . Wymyśliłem to tak ,że program będzie składał się z dwóch okien dialogowych. Pierwsze będzie zawierać listę kategorii (robię ją za pomocą List Box) oraz buttony do dodawania kolejnych list kategorii , usuwania, oraz wyszukiwania jakiejś listy. Czyli np mam listy kategorii : Podzespoły,Monitory,.. itd. I teraz klikając w listę kategorii np Monitory otworzy mi się drugie okno dialogowe w którym będą zawarte towary czyli monitory i info o nich np nazwa ,cena ,ilość ,inne dane (ta listę chcę stworzyć za pomocą Control List) i będą tam także buttony do dodawania usuwania i wyszukiwania konkretnych towarów. I teraz mam problem jak to ze sobą połączyć żeby to wszystko chodziło i żeby do każdej kategorii tworzyło nowa listę towarów. Wydaję mi się że listę kategorii (w list boxie) powinienem wypełnić za pomocą tablic np na forze , dzięki temu każda kategoria takiej listy miałby swój indeks 1,2,3... . I wtedy mógłbym do konkretnego indeksu np monitory indeks 2 otwierać towary (control list) tylko dla właśnie dwójki. A swoją drogą control list też musze wypełnić za pomocą tablicy. Nie wiem za bardzo jak to zapisać. Potrafię zrobić list box'a ale nie wypełniam go za pomocą tablicy. tylko np tak:


    BOOL Csemv3Dlg::OnInitDialog()
    {
            CDialogEx::OnInitDialog();
     
            // Add "About..." menu item to system menu.
     
            // IDM_ABOUTBOX must be in the system command range.
            ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
            ASSERT(IDM_ABOUTBOX < 0xF000);
     
            CMenu* pSysMenu = GetSystemMenu(FALSE);
            if (pSysMenu != NULL)
            {
                    BOOL bNameValid;
                    CString strAboutMenu;
                    bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
                    ASSERT(bNameValid);
                    if (!strAboutMenu.IsEmpty())
                    {
                            pSysMenu->AppendMenu(MF_SEPARATOR);
                            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
                    }
            }
     
            // Set the icon for this dialog.  The framework does this automatically
            //  when the application's main window is not a dialog
            SetIcon(m_hIcon, TRUE);                        // Set big icon
            SetIcon(m_hIcon, FALSE);                // Set small icon
     
            // TODO: Add extra initialization here
            m_lista.AddString(_T("Monitory"));    // **tutaj wyświetla mi kilka podstawowych kategorii **
            m_lista.AddString(_T("Komputery"));
            m_lista.AddString(_T("Laptopy"));
            m_lista.AddString(_T("Podzespoły"));
            m_lista.AddString(_T("Obudowy"));
            m_lista.AddString(_T("Drukarki"));
            m_lista.AddString(_T("Części"));
     
            m_lista.SetCurSel(0);  // **tutaj ustawiam podświetlenie pierwszej kategorii**
     
            m_ListCount = m_lista.GetCount(); // **tutaj mi zlicza wszystkie kategorie i wyświetla w edit boxie**
            UpdateData(FALSE);
            SetBackgroundColor(255255); // **kolor tła**
     
            return TRUE;  // return TRUE  unless you set the focus to a control
    }




    Za pomocą tej funkcji dodaje kolejne kategorie :

    void Csemv3Dlg::OnAddtoList()
    {
            UpdateData();
            m_lista.AddString(m_Add);  // tutaj dodaje
            m_ListCount = m_lista.GetCount(); // tutaj na nowo zlicza 
            UpdateData(FALSE);
            // TODO: Add your control notification handler code here
    }



    Za pomocą tej funkcji usuwa jakąś kategorie :


    void Csemv3Dlg::OnDeleteItem()
    {
            m_lista.DeleteString(m_lista.GetCurSel()); // tutaj usuwa
            m_ListCount = m_lista.GetCount();  // tutaj na nowo zlicza 
            UpdateData(FALSE);
            // TODO: Add your control notification handler code here
    } 




    I to jest to co mam na razie do list box'a z kategoriami z tym ,że nie wiem jak to zrobić żeby wypełniało za pomocą tablicy, oraz nie wiem jak zrobić wyszukiwanie.
    Dalej nie wiem jak właśnie zrobić to przejście z jakiejś kategorii do listy towarów utworzonej w Control list . Proszę o jakąś pomoc i czekam na odp . pozdrawiam (jeśli ktoś miałby chwilę czasu i mógłby przerobić to co mam i utworzyć takie połączenie to byłbym wdzięczny bo resztę już bym mógł zrobić bo nie wiem jak to zrobić)
  • REKLAMA
  • #2 9571667
    inot
    Poziom 38  
    Posty: 3560
    Pomógł: 441
    Ocena: 802
    Cytat:
    Wydaję mi się że listę kategorii (w list boxie) powinienem wypełnić za pomocą tablic np na forze

    Nie rozumiem o jakie tablice tu chodzi.
  • REKLAMA
  • #3 9571692
    ssss91
    Poziom 9  
    Posty: 12
    Ocena: 1
    Zwykła tablica przechowująca stringi ,a bynajmniej tak mi się wydaję.Jeśli widzicie inne rozwiązanie to proszę o propozycję pozdrawiam
  • REKLAMA
  • #4 9572754
    inot
    Poziom 38  
    Posty: 3560
    Pomógł: 441
    Ocena: 802
    Cytat:
    Dalej nie wiem jak właśnie zrobić to przejście z jakiejś kategorii do listy towarów utworzonej w Control list .

    Za pomocą metody "LBN_SELCHANGE" albo "LBN_DBLCLK" klasy "CListBox" (CListBox m_lista) można przejść do innego dialogu.
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Listę można uzupełniać np. za pomocą klasy "CComboBox".
  • REKLAMA
  • #5 9578180
    ssss91
    Poziom 9  
    Posty: 12
    Ocena: 1
    No tak ale to jest zwykle przejście i to wiem a mi ma przejść np z kategorii: laptopy do towarów np asus cena opis , acer cena opis itd, później np z kategorii monitory do towarów monitor samsung cena opis, itd
    I chodzi o to ze to musi być jakoś tak połączone ze do każdej kategorii inna lista towarów i nie mam pojęcia jak to zrobić taki denny sposób to tablica dwuwymiarowa [x][y] gdzie x to indeks kategorii, a y to indeks listy towarów z tym ze coś nawet to nie chce mi wyjść i sypie błędami.
  • #6 9580516
    inot
    Poziom 38  
    Posty: 3560
    Pomógł: 441
    Ocena: 802
    Ja bym to rozwiązał innym sposobem. Poniżej przykład.
    Załączniki:
    • auszug.gif (5.93 MB) Musisz być zalogowany, aby pobrać ten załącznik.
REKLAMA