用CheckBox进行多选,选中的就进行某种处理。问题是:现在有20个CheckBox,这么多,情况也就会很多。这么多的情况如果每种可能选项组合都写成程序,那简直太大了。
我该怎么办呢?有没有很巧妙的的算法?
没有办法,循环
用循环,不过还是很变态哦。
把6个CheckBox的Tag设成0~5
6个CheckBox共用一个OnClick事件处理:
...(TObject *Sender)
{
CheckBox * chbArr[]={CheckBox1,CheckBox2,CheckBox3,CheckBox4,CheckBox5,CheckBox6};
int index;
DWORD dwVal=0;
for(index=0;index<6;index++)
{
if(chkbArr[index]->Checked)
{
dwVal = dwVal | (1<<chkArr[index]->Tag);
}
}
switch(dwVal)
{
case 0x00000000:
...;break;
case 0x00000001:
...;break;
...
default:
...;break;
}
}
用TList实现也可以
是不是定数据表的查询条件啊。是的话可以这样
AnsiString strSQLSelect;
strSQLSelect = "select * from table_name where (1=1)"
if ( CheckBox1->Checked )
{
strSQLSelect += "and CheckBox1->Text"
}
.
.
.
.
.
.
不知会不会有帮助。