![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Firex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 20.10.2010 Репутация: нет Всего: нет |
Прошу подсказки оптимального алгоритма.
Здача следующая: Есть 4 CheckBox, каждое из которых задаёт параметр фильтрации и вывода отлильтрованной информации. Может быть одновременно нажато как 1 так и все 4 CheckBox. Вопрос в том, как наиболее рационально написать действия для каждого из CheckBox, что бы получилось поменьше кода? Прямой как лом вариант, используя Case для каждой вариации нажатий, но тут не один десяток строк получится... |
|||
|
||||
| rodnover |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: 1 Всего: 10 |
|
|||
|
||||
| AndreyIQ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 5.2.2007 Репутация: 1 Всего: 8 |
Не очень понятно какого рода информация. Вы бы хоть кусок кода привели. |
|||
|
||||
| Firex |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 20.10.2010 Репутация: нет Всего: нет |
Скажите, а как это будет выглядеть? У меня немного другая реализация определения нажатых CheckBox, но примерно тоже самое и имею, что вы наисали. Т.е. опять таки придётся теперь для каждой вариации нажатий описывать действия... Или я не прав? Вот так это выглядит(думаю лучше картинкой, а не кодом): ![]() При нажатии одного из CheckBox активизируются соответствующие поля, если CheckBox=false, то поля не активны. |
||||
|
|||||
| pseud |
|
||||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 10 Всего: 40 |
придется в отдельных панелях держать, чтоб чекбокс отвечал за свою паенль ![]() а код что-то типа
-------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
||||
|
|||||
| Firex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 20.10.2010 Репутация: нет Всего: нет |
Я реализовал всё, остался только последний шаг, а именно:
Нужно как-то фильтровать данные, в зависимости от нажатых CheckBox. На каждый отдельный CheckBox фильтр есть, проблема в том, что я не понимаю как можно эфективно их объеденить(фильтры) если нажаты не 1, а несколько CheckBox. Вопрос в том, каким методом объеденить эти фильтры(если нажаты несколько CheckBox), использовать Case, или же есть что-то более эфективное для такой ситуации. Если писать через Case, то получится около 15 вариантов, а это очень много, учитывая, что нужно обрабатывать кучу операторов для каждого фильтра. |
|||
|
||||
| 14SatanA88 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 13.5.2010 Репутация: нет Всего: 5 |
Firex, я не совсем все понял (сонный еще), но вроде бы ты хочешь собрать строку для фильтра.
ну так вот, когда будешь обрабатывать фильтрацию, соединяй куски через 'AND'. если в строке еще ничего нет, AND там не нужен ну например так хотя бы:
в итоге соберется ровная строка фильтра. надеюсь, я правильно понял, что тебе нужно. |
|||
|
||||
| rodnover |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: 1 Всего: 10 |
Это фильтры для построения запроса в SQL?
Если да, то я делаю так (продолжу свой код)
А в программе просто переоткрываю таблицу просто меняя ее параметры
Если собирать строчку в зависимости от условий -- ошибок кучу можно получить, которые отлаживать не очень просто. Это сообщение отредактировал(а) rodnover - 9.9.2011, 09:11 |
||||
|
|||||
| Firex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 20.10.2010 Репутация: нет Всего: нет |
Большое спасибо всем отписавшимся! У г-на 14SatanA88 наиболее близкий вариант того, что мне надо. Глядя на его код мне в голову пришло интересное решение, при загрузке программы задать всем фильтрам дефолтные значения, в таком диапазоне, что если пользователь будет использовать несколько фильтров одновременно, то оставшиеся(если таковые будут) не будут мешать основному запросу в виду своих максимальных и минимальных значений соответственно. А при нажатии на кнопку применить запрос будет всегда одинаков, вида Фильтр1+Фильтр2+Фильтр3+Фильтр4.
Это сообщение отредактировал(а) Firex - 9.9.2011, 09:30 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |