Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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. В тот момент когда ты вызываешь модальную форму ты и производи эти операции.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)