PC Ekspert Forum

PC Ekspert Forum (https://forum.pcekspert.com/index.php)
-   Web dizajn, programiranje i ostalo (https://forum.pcekspert.com/forumdisplay.php?f=39)
-   -   Visual C++ (https://forum.pcekspert.com/showthread.php?t=57998)

Dr. Beast 21.01.2007. 14:28

Visual C++
 
Kako da napravim da kada u ovom ispod dijalogu npr. odaberem nekog izvođača bude u combo boxu (ispod gdje piše album) jedan popis albuma, a kada odaberem nekog drugog izvođača bude samo poipis njegovih albuma? Napravio sam projekt pomoću MFC AppWizarda
: bonker :

http://img296.imageshack.us/img296/1...inar3ik.th.gif

immortal 21.01.2007. 18:03

ako koristiš ms visual c++ 6 (ali vjerovatno je i u drugim verzijama isto):
napravi combo box, u class wizardu idi na add variable, upiši ime, kategorija: control, type: CComboBox. zatim popunjavaš combo box preko m_ime_combo_boxa.AddString("neki tekst"); nakon što korisnik izabere izvođača.

Dr. Beast 21.01.2007. 21:06

Ma znam ja kako dodati stringove u combo box. Mene muči ovo: npr. ako pod izvodac odaberem neko_ime1 da se pod albumi pojave samo albumi od neko_ime1, a ako pod izvodac odaberem neko_ime2 da se pojave samo albumi od neko_ime2, ne i albumi od neko_ime2...

immortal 22.01.2007. 10:00

Citiraj:

Autor Dr. Beast (Post 625406)
Ma znam ja kako dodati stringove u combo box. Mene muči ovo: npr. ako pod izvodac odaberem neko_ime1 da se pod albumi pojave samo albumi od neko_ime1, a ako pod izvodac odaberem neko_ime2 da se pojave samo albumi od neko_ime2, ne i albumi od neko_ime2...

na drugom combo boxu složi funkciju za CBN_DROPDOWN (preko class wizarda):
Citiraj:

void CSdfgDlg::OnDropdownCombo2() //to je drugi combo
{
// TODO: Add your control notification handler code here
// -----------------------------------------------------------------------------
UpdateData(TRUE);
// ocisti sadrzaj drugog combo boxa
m_ctrCombo2.ResetContent(); // m_ctrCombo2 je varijabla drugog combo boxa (control)
if(m_SCombo1=="PARNI") { // m_SCombo1 je varijabla prvog combo boxa, ona sadrzi trenutno oznacen sadrzaj (CString)
m_ctrCombo2.AddString("2");
m_ctrCombo2.AddString("4");
m_ctrCombo2.AddString("6");
m_ctrCombo2.AddString("8");
}
if(m_SCombo1=="NEPARNI") {
m_ctrCombo2.AddString("1");
m_ctrCombo2.AddString("3");
m_ctrCombo2.AddString("5");
m_ctrCombo2.AddString("7");
}

// -----------------------------------------------------------------------------

}
znači, prije dropdowna drugog combo boxa, taj combo box se ispunjava s podacima prema trenutno označenom tekstu u prvom combo boxu (PARNI ili NEPRANI). dok se označi "parni" onda se upišu brojevi 2,4,6,8, a dok se označi "neparni" onda se prvo očisti sadržaj (da ne ostanu parni koji su već unutra) i upišu brojevi 1,3,5,7.

Dr. Beast 22.01.2007. 10:32

Javi mi se ovaj error:
error C2678: binary '==' : no operator defined which takes a left-hand operand of type 'class CComboBox' (or there is no acceptable conversion)

Ovako mi izgleda kod:
void CSeminarDlg::OnDropdownAlbum()
{
// TODO: Add your control notification handler code here

// OCISTI SADRZAJ COMBO BOXA ALBUMI
UpdateData(TRUE);

m_Album.ResetContent(); // m_Album je varijabla drugog combo boxa (control)
if(m_Izvodac=="Johnny Cash") { // m_Izvodac je varijabla prvog combo boxa, ona sadrzi trenutno oznacen sadrzaj (CString)
m_Album.AddString("2");
m_Album.AddString("4");
m_Album.AddString("6");
m_Album.AddString("8");
}
if(m_Izvodac == "Tom Waits") {
m_Album.AddString("1");
m_Album.AddString("3");
m_Album.AddString("5");
m_Album.AddString("7");
}
}


a ovako sam definirao varijable:
http://img208.imageshack.us/img208/9...able2no.th.gif

immortal 22.01.2007. 10:47

moraš imati varijable koje su CString za uspoređivanje s "nekaj". za combo box sa izvođačima kreiraj još jednu varijablu koja je CString (nazovi ju m_sIzvodac, s kao string) i tu varijablu usporedi sa "Ime nekog".
edit: uglavnom, varijabla m_Izvodac mora biti CString da bi kod koji si ti napisao radio

Dr. Beast 22.01.2007. 10:53

Citiraj:

Autor immoRt4L (Post 625769)
moraš imati varijable koje su CString za uspoređivanje s "nekaj". za combo box sa izvođačima kreiraj još jednu varijablu koja je CString (nazovi ju m_sIzvodac, s kao string) i tu varijablu usporedi sa "Ime nekog".
edit: uglavnom, varijabla m_Izvodac mora biti CString

Evo ovako sam riješio i sve radi za 5. Dodao sam još jednu funkciju da se kod drop down-a combo box-a od izvodaca odmah briše sadžaj combo box-a album:

void CSeminarDlg::OnDropdownAlbum()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
// OCISTI SADRZAJ COMBO BOXA ALBUMI
//m_Album.ResetContent(); // m_ctrCombo2 je varijabla drugog combo boxa (control)

CString izbor;
m_Izvodac.GetWindowText(izbor);
//m_Izvodac.GetLBText(izbor);
if(izbor == "Johnny Cash") { // m_SCombo1 je varijabla prvog combo boxa, ona sadrzi trenutno oznacen sadrzaj (CString)
m_Album.AddString("2");
m_Album.AddString("4");
m_Album.AddString("6");
m_Album.AddString("8");
}
if(izbor == "Tom Waits") {
m_Album.AddString("1");
m_Album.AddString("3");
m_Album.AddString("5");
m_Album.AddString("7");
}
}

void CSeminarDlg::OnDropdownIzvodac()
{
// TODO: Add your control notification handler code here
m_Album.ResetContent();
}


Puno hvala na pomoći : hello2 : Ako prolaziš kroz Rijeku javi se i idemo na : cheers2


Sva vremena su GMT +2. Sada je 18:48.

Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 1999-2024 PC Ekspert - Sva prava pridržana ISSN 1334-2940
Ad Management by RedTyger