Вопрос № 166261: Здравствуйте! Помогите пожалуйста решить! В Delphi на форме присутствуют компоненты CheckBox1, DateTimePicker1, DateTimePicker2. Нужно, чтобы при нажатии на компоненту CheckBox1 в DBGrid1 фильтровало даты, учитывая период из DateTimePicker1 по Dat...
Вопрос № 166.261
Здравствуйте! Помогите пожалуйста решить! В Delphi на форме присутствуют компоненты CheckBox1, DateTimePicker1, DateTimePicker2. Нужно, чтобы при нажатии на компоненту CheckBox1 в DBGrid1 фильтровало даты, учитывая период из DateTimePicker1 по DateTimePicker2. Заранее благодарю!
Отправлен: 01.05.2009, 19:50
Вопрос задала: T. Tanyta (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Тимошенко Дмитрий
Здравствуйте, T. Tanyta!
Для этого вам надо:
В событиях CheckBox1 создайте процедуру на событие OnClick такого вида: procedure TForm1.CheckBox1Click(Sender: TObject); begin ADOTable1.Filter:='DATEFIELD>='+DateToStr(DateTimePicker1.Date)+' and DATEFIELD<='+DateToStr(DateTimePicker2.Date); ADOTable1.Filtered:=CheckBox1.Checked; end;
DATEFIELD - поле с датой по которому производится фильтрация. (Замените на ваше). Также нужно замените ADOTable1 -
на имя вашего DataSet, который используется в DBGrid1 в качестве источника данных.
С уважением, Дмитрий
Ответ отправил: Тимошенко Дмитрий (статус: 9-й класс)
Ответ отправлен: 02.05.2009, 10:34
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 248519 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5 Комментарий оценки: Дмитрий, большое Вам спасибо!
Отвечает: Foxbox
Здравствуйте, T. Tanyta! Рекомендую воспользоваться фильтрацией не DBGrid1, а связанного с ним TDataSet (TQuery, TTable или иные) У DataSet есть событие OnFilterRecord Вот его обработчик и определите. Пример обработчика в найдете в приложении. Замечу, что приведенный текст работает только с датой пикера. Если какие-то иные условия по задаче (что именно стоит в поле Kind пикеров), то уж переделаете текст самостоятельно. Ну и нужное наименование поля для анализа указывайте.
А так, более плотно
работайте со справочной системой дельфей. P.S. найдет ищущий, вопрошающий не найдет...
Приложение:
Ответ отправил: Foxbox (статус: 3-й класс)
Ответ отправлен: 04.05.2009, 10:40
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 248602 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.