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

0

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ć)

0

A skąd mają być pobierane dane z towarami?

0

One nie będą znikąd pobierane tylko ja będę je dodawał i to co dodam to zapiszę i po otworzeniu to już będzie. Dlatego muszę to chyba w tablicach przechowywać. Oczywiście mogę zrobić parę danych do pobrania ale to chyba będzie bardziej skomplikowane ,a to ma być prosty programik .

0

Poczytaj o kolekcjach danych, w MFC jest ich trochę np. CStringList, CMap, CArray itp. Tak by było najlepiej.
Od biedy możesz zrobić tablicę dwuwymiarową np. produkty[x][y] gdzie x to kod kategorii a y to produkt.
Druga tablica byłaby na kategorie. Jak mówię to rozwiązanie raczej denne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1