Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 29 мар 2024, 07:59

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Фильтрация в MemTableEh
СообщениеДобавлено: 08 апр 2021, 06:13 
Не в сети

Зарегистрирован: 08 апр 2021, 05:43
Сообщений: 3
Использую Delphi 10.4 + Ehlib 10 VCL
Данные подгружаются из MS SQL
На форме TADODataDriverEh + TMemTableEh + TDataSource + TDBGridEh
STFilter.Local:=True

Значения для фильтрации добавляются автоматически, но только те, что видны в данный момент.
Прокрутишь значения колонки до конца таблицы - в фильтре появятся все значения.
Но если сделать сортировку по любой колонке - значения сбросятся и в фильтре будут отображаться только те значения, что видны в данный момент.
1. Как сделать, чтобы значения фильтра повторяли полный список уникальных значений колонки?
2. Как сделать, чтобы в некоторых колонках (например цена), не отображался список значений, но при этом можно было задавать условия фильтрации?


Вложения:
EhLib.jpg
EhLib.jpg [ 58.42 KiB | Просмотров: 1580 ]
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Фильтрация в MemTableEh
СообщениеДобавлено: 09 апр 2021, 16:01 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1546
Добрый день.


Цитата:
1. Как сделать, чтобы значения фильтра повторяли полный список уникальных значений колонки?

Возможно вам нужно установить TMemTableEh.FetchAllOnOpen

Цитата:
2. Как сделать, чтобы в некоторых колонках (например цена), не отображался список значений, но при этом можно было задавать условия фильтрации?

С помощью настроек, к сожалению добиться такой функциональности не получиться.

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Фильтрация в MemTableEh
СообщениеДобавлено: 09 апр 2021, 19:09 
Не в сети

Зарегистрирован: 08 апр 2021, 05:43
Сообщений: 3
Здравствуйте, спасибо за ответ.

По первому вопросу - да, установка этого свойства в True помогла.

По второму вопросу - в руководстве разработчика написано:
Цитата:
Каждый раз, при необходимости заполнить выпадающий список StFilter’а, грид вызывает событие OnFillSTFilterListValues.

В модуле DBGridEh уже предопределены следующие глобальные переменные:
PopupListboxItemEhData: TPopupListboxItemEhData;
Элемент списка отображает текст, определяющий значение для фильтрации. При выборе, помечает текущий элемент галочкой и добавляет в список элементов, которые задают значения для фильтрации.

В событии вы можете вызвать обработчик события по умолчанию:
TDBGridEh.DefaultFillSTFilterListValues(Column: TColumnEh; Items: TStrings)
TDBGridEh.DefaultFillSTFilterListCommandValues(Column: TColumnEh; Items: TStrings)
TDBGridEh.DefaultFillSTFilterListDataValues(Column: TColumnEh; Items: TStrings)

В следующем примере в коде события грида OnSTFilterListValues удаляются элементы выпадающего списка, выполняющие сортировку:

procedure TForm1.DBGridEh1FillSTFilterListValues(Sender: TCustomDBGridEh;
Column: TColumnEh; Items: TStrings; var Processed: Boolean);
var
Index: Integer;
begin
Sender.DefaultFillSTFilterListValues(Column, Items);
Index := Items.IndexOfObject(PopupListboxItemEhSortAsc);
if Index >= 0 then
Items.Delete(Index);
Index := Items.IndexOfObject(PopupListboxItemEhSortDes);
if Index >= 0 then
Items.Delete(Index);
Processed := True;
end;

Пробовал и в этом событии и в DBGridEh1Columns1FillSTFilterListValues - результата нет...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Фильтрация в MemTableEh
СообщениеДобавлено: 12 апр 2021, 16:20 
Не в сети
Администратор

Зарегистрирован: 19 дек 2011, 17:40
Сообщений: 837
Добрый день.

В событии OnFillSTFilterListValues установите параметр Processed в True для тех столбцов, для которых список не нужен.

Код:
procedure TForm1.DBGridEh1FillSTFilterListValues(Sender: TCustomDBGridEh;
  Column: TColumnEh; Items: TStrings; var Processed: Boolean);
begin
  if (Column.FieldName = 'Continent') then
  begin
    Processed := True;
  end;
end;

_________________
Best regards
Admin


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Фильтрация в MemTableEh
СообщениеДобавлено: 12 апр 2021, 17:33 
Не в сети

Зарегистрирован: 08 апр 2021, 05:43
Сообщений: 3
Спасибо, получилось!


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB