Jak spreawdzić co jest zaznaczone w listBox?
wxControlWithItems::GetSelection()
To np. mam taki List Box:
wxArrayString arrayStringFor_WxListBox1;
WxListBox1 = new wxListBox(this, ID_WXLISTBOX1, wxPoint(113,101), wxSize(121,97), arrayStringFor_WxListBox1, wxLB_SINGLE);
WxListBox1->Append(wxT("jeden ;)"));
WxListBox1->Append(wxT("dwa :D"));
WxListBox1->Append(wxT("trzy :P"));
jak powinienem uzyt tej funkcji?
Na przykład tak, jeżeli kontrolka pozwala na wybranie tylko jednego elementu i ma jeden domyślnie zaznaczony:
wxMessageBox("Wybrano: "+WxListBox1->GetStringSelection()+" na pozycji "+WxListBox1->GetSelection());
Coś mi nie wychodzi:
void ChooseUser()
{
wxString selectedUser = CMainFrame::userList->GetStringSelection();
}
Co jest grane?
Nie wiem dlaczego do userList odwołujesz się operatorem :: . Ale ostatecznie to nie jest błąd, jeżeli ta lista jest statyczna. W tym co napisałem jest jakiś problem z konwersjami, więc poniżyj sprawdzony kod. Akcja sie dzieje po naciśnięciu buttona, jest sprawdzany wybór w listbox i pokazany komunkiat.
void listboxFrm::WxButton1Click(wxCommandEvent& event)
{
// insert your code here
wxString s="Wybrano: ";
s<<WxListBox1->GetStringSelection();
s<<" na pozycji ";
s<<WxListBox1->GetSelection();
wxMessageBox(s);
}
No tak, ale ja chcę, żeby moja funkcja działała.
Co jest grane?
Jest ona poza klasą CMainFrame.
a to napisał kompilator:
E:\Documents and Settings\Konrad_2\Moje dokumenty\Bad Worm\Menadżer haseł\src\Broadway\main.h In function `void ChooseUser()':
55 E:\Documents and Settings\Konrad_2\Moje dokumenty\Bad Worm\Menadżer haseł\src\Broadway\main.h invalid use of non-static data member `CMainFrame::userList'
67 E:\Documents and Settings\Konrad_2\Moje dokumenty\Bad Worm\Menadżer haseł\src\Broadway\main.cpp from this location
67 E:\Documents and Settings\Konrad_2\Moje dokumenty\Bad Worm\Menadżer haseł\src\Broadway\main.cpp [Warning] unused variable 'selectedUser'
E:\Documents and Settings\Konrad_2\Moje dokumenty\Bad Worm\Menadżer haseł\src\Broadway\Makefile.win [Build Error] [main.obj] Error 1
Jest ona poza klasą CMainFrame.
No to zrób ją częścią klasy CMainFrame.
Ale po co, mi się wydaje, że tak będzie lepiej.
A dlaczego lepiej? :>
Jak będzie poza klasą, to w funkcji musisz mieć wskaźnik na klasę okna. Lepiej zrobić tą funkcję w klasie okna. W moim przykładzie jest to funkcja obsługująca zdarzenie guzika. Poza tym jak jest poza klasą, to jak ją wywołasz? Zwykle używa się do tego zdarzenia okna, które ma obsługę w klasie okna. Dlatego uważam, że nie bedzie lepiej, jak funkcja będzie poza klasą.