Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > DBGridEh + STFilter |
Автор: faust911 28.4.2009, 21:00 |
На всех форумах пишут: "Для того чтобы фильтр срабатывал не по нажатию "Enter" а после выбора элемента из списка необходимо задать переменную: DBGridEhDefaultStyle()->FilterEditCloseUpApplyFilter = true; Для С++ или initialization DBGridEhDefaultStyle.FilterEditCloseUpApplyFilter := True; Для Delphy Я использую RAD Studio 2009 и Ehlib 4.4, пишу на С++ и не могу найти переменную FilterEditCloseUpApplyFilter Функция DBGridEhDefaultStyle() есть, а переменной нету. Все остальное работает... Хотелось бы понять в чем загвоздка, подскажите пожалуйста. |
Автор: vovk 28.4.2009, 21:05 | ||
ЭЭ мож вы ветку перепутали ? тут вообщето дельфи обсуждают.. ну паскаль там .. ну не как не c++ ![]() |
Автор: faust911 28.4.2009, 21:08 |
кхххх точно ![]() |
Автор: Kbl4AH 29.4.2009, 15:42 |
это свойство |
Автор: faust911 5.5.2009, 00:04 |
А как до FilterEditCloseUpApplyFilter добраться? |
Автор: faust911 5.5.2009, 00:47 |
Разобрался... Если кому будет полезно, то чтобы сделать фильтрацию без лишних нажатий клавиши Enter - необходимо использовать: Delphy: DBGridEhDefaultStyle.FilterEditCloseUpApplyFilter := True; // EhLib до версии 4.2 DBGridEhCenter.FilterEditCloseUpApplyFilter:=true; // версия 4.2 C++: DBGridEhDefaultStyle()->FilterEditCloseUpApplyFilter = True; // EhLib до версии 4.2 DBGridEhCenter()->FilterEditCloseUpApplyFilter =true; // версия 4.2 |
Автор: TopCore 22.11.2010, 11:56 |
Здравствуйте все! Подскажите мне, пожалуйста, почему не получается фильтровать. Вроде делаю всё, как описано: STFilter.Visible и Local := true; ListSource задал, DataField задал. Использую OracleDataSet. Что нужно ещё где-то написать, чтобы фильтр заработал? Пробовал писать OnApplyFilter - не фильтрует всё равно. Не пойму ещё, в каком именно месте нужно написать /*Filter*/? |
Автор: Vas 24.11.2010, 08:14 |
Компоненты доступа как называются ODAC? Если да, то нужно OracleDataset поставить свойство Filtered;=True и написать модуль EhLibODAC по аналогии с EhLibBDE. Свой моуль прикладываю, но он только для TOraQuery и TOraTable и для Ehlib 5.2. Но сами разберетесь, там не сложно. |
Автор: TopCore 25.11.2010, 08:59 | ||
Компоненты DOA v4.1.2, EhLib v5.0. Спасибо огромное за информацию. Этим и подумал заняться (переписать под ORACLE), но мне советовали переписать EhLibADO. В данный момент разбираться со всеми модулями времени нет, поэтому подскажите, пожалуйста, какой лучше модуль переписывать? Реализовал событие правильно OnApplyFilter и фильтр заработал, но не совсем гладко: при первом выборе всё фильтруется; при раскрывании фильтра во второй раз в списке оказывается всего лишь 5 элементов ("Clear filter"..., и пятый один единственный выбранный ранее элемент). Т.е. во второй раз (и в следующие разы) могу фильтровать только один элемент, который выбрал в первый раз. Плюс ко всему, если я выберу "Clear filter" (или "Empty", "Not empty"...), то выводит сообщение об ошибке EExpression ... 'Unexpected end of factor'. Что делать? Заранее спасибо! |
Автор: Vas 25.11.2010, 11:27 |
Да EhLibADO лучше, я попутал, давно просто его переписывал и что-то слегка подзабыл. |
Автор: TopCore 25.11.2010, 12:52 |
Почти всё сделал. Но в EhLib 5.0 в классе TSQLDatasetFeaturesEh нет процедуры FillSTFilterListDataValues. Она автоматом заполняет STFilter всеми значениями? У меня после первого выбора значения в фильтре остаётся только оно. Как это можно побороть? Написать своё заполнение? |
Автор: Vas 25.11.2010, 14:42 |
У меня этот модуль работает на EhLib 5.2 без проблем. Для 4 версии модуль слегка другой. |
Автор: TopCore 17.12.2010, 16:31 |
Vas, очень помог Ваш файл. Большое спасибо! Но есть другая проблемка, может Вы сталкивались с ней: при повторном открытии фильтра, там всего лишь одна запись, которую я выбрал. Как сделать, чтобы STFilter заполнялся снова всеми записями? |
Автор: Vas 19.12.2010, 09:45 |
Что-то странно, в той колонке в которой фильтр уже выбран все записи, а в других только те которые соответствуют отфильтрованным - это для MemTableEh. А если подключать в фильтр отдельные запросы и указывать их для колонки, то они всегда полными остаются. |