PDA

View Full Version : [Visual C++] Combo Box


pa_co
01-12-2007, 21:40
salve ragazzi, ho un problema con la Combo Box di Visual C++, in pratica ho bisogno che ogni volta che seleziono un elemento del menù a tendina la variabile associata al menù (che ho scelto di tipo CString) assuma tale valore... Ho provato tutti gli eventi ma non funziona... Suggerimenti?? Grazie

vizzz
02-12-2007, 10:35
salve ragazzi, ho un problema con la Combo Box di Visual C++, in pratica ho bisogno che ogni volta che seleziono un elemento del menù a tendina la variabile associata al menù (che ho scelto di tipo CString) assuma tale valore... Ho provato tutti gli eventi ma non funziona... Suggerimenti?? Grazie

hai provato con l'evento onselchange? poi ricordati di chiamare UpdateData(TRUE)

pa_co
02-12-2007, 12:42
Ti riporto il mio codice. Dovrebbe abilitare e disabilitare dei controlli a secondo dell'elemento di menù selezionato...e invece sembra che abiliti e disabiliti gli elementi a caso(per esempio quando seleziono "Arch" dovrebbe disabilitare tutti i controlli). m_combo è la variabile associata alla combo box ed è di tipo CString. I termini tra apici sono gli elementi del menù a tendina...Dove sta l'errore?

void CIdentityDlg::OnSelchangeCombo()
{
// TODO: Add your control notification handler code here
//UpdateData(FALSE);
if(m_combo == "Arch")
{
GetDlgItem(IDC_EDIT1)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT2)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT3)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT4)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT5)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT6)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT7)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT8)->EnableWindow(FALSE);
UpdateData(TRUE);
}
if (m_combo == "Left Loop")
{
GetDlgItem(IDC_EDIT1)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT2)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT3)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT4)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT5)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT6)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT7)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT8)->EnableWindow(TRUE);
}
if (m_combo == "Right Loop")
{
GetDlgItem(IDC_EDIT1)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT2)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT3)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT4)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT5)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT6)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT7)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT8)->EnableWindow(TRUE);
}
if (m_combo == "Whorl")
{
GetDlgItem(IDC_EDIT1)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT2)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT3)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT4)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT5)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT6)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT7)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT8)->EnableWindow(TRUE);
}
if (m_combo == "Tended Arch")
{
GetDlgItem(IDC_EDIT1)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT2)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT3)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT4)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT5)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT6)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT7)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT8)->EnableWindow(TRUE);
}
if (m_combo == "None")
{
GetDlgItem(IDC_EDIT1)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT2)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT3)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT4)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT5)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT6)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT7)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT8)->EnableWindow(TRUE);
}

UpdateData(TRUE);



}

Spero che potrai essermi di aiuto... Grazie mille....

pa_co
02-12-2007, 13:14
Ho risolto bastava mettere UpdateData(TRUE) prima degli if...invece che dopo...Grazie lo stesso. Ciao