допустим, речь идёт о поиске по условию, вида "(A=1) and (B=2) and (C=10)...". тогда можно сделать так:
1. объявляем массив с именами параметров:
const
ParamCount = 5;
ParamNames: array [1..ParamCount] of string = ('A=1', 'B=2', 'C=3', D=4', 'E=5');
2. всем чекбоксам выставляем свойство Tag от 1 до PAramCount. например, у третьего комбобокса тэг будет равен 3, ParamNames [CheckBox3.Tag] = 'C=3'.
3. далее - делаем как у
zubr-а, только вместо формирования списка объектов в цикле можно формировать непосредственно список условий:
if (Components [i].Tag > 0) and (Components [i] as TCheckBox).Checked then begin
if ConditionStr <> '' then
ConditionStr := ConditionStr + ' and ';
ConditionStr := ConditionStr + ParamNames [Components [i].Tag];
end;
здесь ConditionStr - обычная строковая переменная. это вариант, в общем-то, не противоречит, а дополняет вариант
zubr-а. единственное, к чему там можно придраться - это использование Components вместо Controls при итерации по визуальным компонентам.