| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Помогите разобраться с событиями и строками |
| Автор: Des 9.8.2005, 06:31 |
| Добрый день. Задача такова: есть форма Form4 на ней 16 CheckBox, из этой формы вызывается модальная форма, на которой находится StringGrid. анализируем указанные CheckBox и формируем AnsiString строку из 1 и 0, потом анализируя строку формируем на каждую пару значений строку в StringGrid, код который все это делает размещен в событии OnShow, проблема в том, что если выйти из модальной формы, изменить указанные ChekBox, то на StringGrid это не отражается, т.е. если ChekBox отключен, он все равно попадает в возможные значения код следующий AnsiString KodChekovConnectov; KodChekovConnectov=""; //16 это кол-во чеков if(Form4->CheckBox1->Checked==true)KodChekovConnectov=KodChekovConnectov+"1"; else KodChekovConnectov=KodChekovConnectov+"0"; if(Form4->CheckBox2->Checked==true)KodChekovConnectov=KodChekovConnectov+"1"; else KodChekovConnectov=KodChekovConnectov+"0"; ................. тут код однотипен if(Form4->CheckBox16->Checked==true)KodChekovConnectov=KodChekovConnectov+"1"; else KodChekovConnectov=KodChekovConnectov+"0"; Label1->Caption=KodChekovConnectov; обнуляем стрин грид StringGrid1->RowCount=0; //теперь анализируем кол-во чеков и создаем на каждую пару //по строчке в стринг грид for (int t=1;t<16;t++) { if (StrToInt(KodChekovConnectov[t])==1) { for (int y=t+1;y<16;y++) { if (StrToInt(KodChekovConnectov[y])==1) { Label1->Caption=KodChekovConnectov; // здесь надо создать строчку в стринг гриде с началом в т //концом в y, но сначала надо проверить може такая строка есть for (int f=0;f<StringGrid1->RowCount;f++) { if (StringGrid1->Cells[0][f]==IntToStr(y)&& StringGrid1->Cells[1][f]==IntToStr(t)) { flagstrok=flagstrok+1; }; }; if (flagstrok==0){ StringGrid1->RowCount=StringGrid1->RowCount+1; StringGrid1->Cells [0][kolStrok]=IntToStr(t); StringGrid1->Cells [1][kolStrok]=IntToStr(y); kolStrok=kolStrok+1; } else { flagstrok=0; continue; }; }; }; }; }; так вот в чем проблема? создается впечатление, что StringGrid не очищается или chekbox не снимает с себя флажки |
| Автор: Mal Hack 9.8.2005, 13:07 |
| Я зачем юзать OnShow. В тот момент когда ты вызываешь модальную форму ты и производи эти операции. |