Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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
Цитата
Я использую RAD Studio 2009 и Ehlib 4.4, пишу на С++ 


ЭЭ мож вы ветку перепутали ? тут вообщето дельфи обсуждают.. ну паскаль там .. ну не как не c++ smile)

Автор: faust911 28.4.2009, 21:08
кхххх точно smile

Автор: Kbl4AH 29.4.2009, 15:42
Цитата(faust911 @  28.4.2009,  22:00 Найти цитируемый пост)
Функция DBGridEhDefaultStyle() есть

это свойство

Автор: 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
Цитата(TopCore @  22.11.2010,  11:56 Найти цитируемый пост)
Использую OracleDataSet. 

Компоненты доступа как называются ODAC? Если да, то нужно OracleDataset поставить свойство Filtered;=True и написать модуль EhLibODAC по аналогии с EhLibBDE. 
Свой моуль прикладываю, но он только для TOraQuery и TOraTable и для Ehlib 5.2. Но сами разберетесь, там не сложно.

Автор: TopCore 25.11.2010, 08:59
Цитата(Vas @ 24.11.2010,  08:14)
Компоненты доступа как называются ODAC? Если да, то нужно OracleDataset поставить свойство Filtered;=True и написать модуль EhLibODAC по аналогии с EhLibBDE. Свой моуль прикладываю, но он только для TOraQuery и TOraTable и для Ehlib 5.2. Но сами разберетесь, там не сложно.

Компоненты 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. А если подключать в фильтр отдельные запросы и указывать их для колонки, то они всегда полными остаются.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)