| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Вывод информации согласно заданному условию |
| Автор: Firex 8.9.2011, 12:18 |
| Прошу подсказки оптимального алгоритма. Здача следующая: Есть 4 CheckBox, каждое из которых задаёт параметр фильтрации и вывода отлильтрованной информации. Может быть одновременно нажато как 1 так и все 4 CheckBox. Вопрос в том, как наиболее рационально написать действия для каждого из CheckBox, что бы получилось поменьше кода? Прямой как лом вариант, используя Case для каждой вариации нажатий, но тут не один десяток строк получится... |
| Автор: rodnover 8.9.2011, 12:27 | ||
|
| Автор: AndreyIQ 8.9.2011, 12:28 | ||
Не очень понятно какого рода информация. Вы бы хоть кусок кода привели. |
| Автор: pseud 8.9.2011, 17:57 | ||||
придется в отдельных панелях держать, чтоб чекбокс отвечал за свою паенль http://s1.ipicture.ru/ а код что-то типа
|
| Автор: Firex 8.9.2011, 18:34 |
| Я реализовал всё, остался только последний шаг, а именно: Нужно как-то фильтровать данные, в зависимости от нажатых CheckBox. На каждый отдельный CheckBox фильтр есть, проблема в том, что я не понимаю как можно эфективно их объеденить(фильтры) если нажаты не 1, а несколько CheckBox. Вопрос в том, каким методом объеденить эти фильтры(если нажаты несколько CheckBox), использовать Case, или же есть что-то более эфективное для такой ситуации. Если писать через Case, то получится около 15 вариантов, а это очень много, учитывая, что нужно обрабатывать кучу операторов для каждого фильтра. |
| Автор: 14SatanA88 9.9.2011, 08:16 | ||
| Firex, я не совсем все понял (сонный еще), но вроде бы ты хочешь собрать строку для фильтра. ну так вот, когда будешь обрабатывать фильтрацию, соединяй куски через 'AND'. если в строке еще ничего нет, AND там не нужен ну например так хотя бы:
в итоге соберется ровная строка фильтра. надеюсь, я правильно понял, что тебе нужно. |
| Автор: rodnover 9.9.2011, 09:08 | ||||
| Это фильтры для построения запроса в SQL? Если да, то я делаю так (продолжу свой код)
А в программе просто переоткрываю таблицу просто меняя ее параметры
Если собирать строчку в зависимости от условий -- ошибок кучу можно получить, которые отлаживать не очень просто. |
| Автор: Firex 9.9.2011, 09:29 |
| Большое спасибо всем отписавшимся! У г-на 14SatanA88 наиболее близкий вариант того, что мне надо. Глядя на его код мне в голову пришло интересное решение, при загрузке программы задать всем фильтрам дефолтные значения, в таком диапазоне, что если пользователь будет использовать несколько фильтров одновременно, то оставшиеся(если таковые будут) не будут мешать основному запросу в виду своих максимальных и минимальных значений соответственно. А при нажатии на кнопку применить запрос будет всегда одинаков, вида Фильтр1+Фильтр2+Фильтр3+Фильтр4. |