View Full Version : [C++] "Indicizzare" le checkbox
Ecco il mio problema, all'interno di una GroupBox ho una serie di CheckBox che nel mio programma indicano i mesi dell'anno
http://img148.imageshack.us/img148/7564/checkboxzcm6.jpg
io dovrei andare a controllare quali di queste 12 CheckBox sono spuntate e se ne trovo una che lo č devo scrivere in un array di interi alla posizione del mese (gennario 0, febbraio 1 ecc..) 1, altrimenti 0.
certo, potrei fare il controllo una ad una per dodici volte in questo modo:
//checkbox1
if (CheckBox1->Checked==true)
a.dispo[0]=1;
else
a.dispo[0]=0;
//checkbox2
if (CheckBox2->Checked==true)
a.dispo[1]=1;
else
a.dispo[1]=0;
ecc.. ecc...
ma non mi sembra un modo molto corretto per procedere, sapete indicarmi se posso indicizzare le checkbox in modo tale da mettere il controllo delle 12 in una specie di for??
grazie in anticipo.
Vincenzo1968
23-10-2008, 18:28
Ecco il mio problema, all'interno di una GroupBox ho una serie di CheckBox che nel mio programma indicano i mesi dell'anno
http://img148.imageshack.us/img148/7564/checkboxzcm6.jpg
io dovrei andare a controllare quali di queste 12 CheckBox sono spuntate e se ne trovo una che lo č devo scrivere in un array di interi alla posizione del mese (gennario 0, febbraio 1 ecc..) 1, altrimenti 0.
certo, potrei fare il controllo una ad una per dodici volte in questo modo:
//checkbox1
if (CheckBox1->Checked==true)
a.dispo[0]=1;
else
a.dispo[0]=0;
//checkbox2
if (CheckBox2->Checked==true)
a.dispo[1]=1;
else
a.dispo[1]=0;
ecc.. ecc...
ma non mi sembra un modo molto corretto per procedere, sapete indicarmi se posso indicizzare le checkbox in modo tale da mettere il controllo delle 12 in una specie di for??
grazie in anticipo.
Ciao,
io invece, trattandosi di pochi elementi, direi che va bene cosė. Se fossero una cinquantina di checkboxes, allora si: potresti gestire la cosa con un array di puntatori a CButton.
Ciao,
io invece, trattandosi di pochi elementi, direi che va bene cosė. Se fossero una cinquantina di checkboxes, allora si: potresti gestire la cosa con un array di puntatori a CButton.
oggi sono 12 ma domani saranno 40-50...
preferirei impararlo ora piuttosto che trovarmi un domani con lo stesso problema :p
Vincenzo1968
23-10-2008, 18:44
Allora invece di dichiarare dodici oggetti CButton nella classe che gestisce la finestra di dialogo, dichiara un array di dodici puntatori di tipo CButton:
CButton * m_arrayCheckBoxesMesi[12];
e, nella funzione OnInitDialog, inizializza l'array cosė:
m_arrayCheckBoxesMesi[0] = (CButton*)GetDlgItem(IDC_CHECK1);
m_arrayCheckBoxesMesi[1] = (CButton*)GetDlgItem(IDC_CHECK2);
m_arrayCheckBoxesMesi[2] = (CButton*)GetDlgItem(IDC_CHECK3);
...
m_arrayCheckBoxesMesi[11] = (CButton*)GetDlgItem(IDC_CHECK12);
for(int k = 0; k < 12; k++)
a.dispo[k] = m_arrayCheckBoxesMesi[k]->GetCheck() == BST_CHECKED ? 1 : 0;
oggi sono 12 ma domani saranno 40-50... no, ti assicuro che i mesi dell'anno resteranno 12 anche domani, fidati :asd:
tomminno
24-10-2008, 10:31
Ma perchč non usare l'evento click sulle checkbox?
In questo modo hai lo stato sempre aggiornato.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.