Фильтр в RxDBGrid
Модераторы: alexs, Модераторы
Фильтр в RxDBGrid
Все привет.
У RxDBGrid есть зело полезная штука как фильтр по содержимому поля колонки. Есть ли возможность получить значение выбора пользователя по фильтру и в каком поле/столбце он это сделал.
Конечно у грида есть событие OnFiltred но толку от него в данном случаи не вижу.
У RxDBGrid есть зело полезная штука как фильтр по содержимому поля колонки. Есть ли возможность получить значение выбора пользователя по фильтру и в каком поле/столбце он это сделал.
Конечно у грида есть событие OnFiltred но толку от него в данном случаи не вижу.
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Сам фильтр со всеми его полями доступен:
Там можно всю информацию получить.
Код: Выделить всё
RxDBGrid1.ColumnByFieldName('').Filter. ;Там можно всю информацию получить.
alexs писал(а):Сам фильтр со всеми его полями доступен:Код: Выделить всё
RxDBGrid1.ColumnByFieldName('').Filter. ;
Там можно всю информацию получить.
Делаю простейшее
RxDBGrid1.ColumnByFieldName('').Filter.ToString
При выборе значения в фильтре валиться с ошибкой на данную строку.
Что то делаю не так ??
alexs писал(а):Ну во первых - имя столбца реальное подставлено?
Во вторых - текущие значения фильтра - Filter.CurrentValues
1. Да конечно
2. CurrentValues - нет такого метода
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Это не метод.
Это свойство:
Смотри пример в ревизии 7166.
Это свойство:
Код: Выделить всё
TRxColumnFilter = class(TPersistent)
private
...
public
...
procedure ClearFilter;
property State:TRxFilterState read FState write FState;
property CurrentValues : TStringList read FCurrentValues;
property ManulEditValue : string read FManulEditValue write FManulEditValue;
property DisplayFilterValue:string read GetDisplayFilterValue;
published
...
Код: Выделить всё
procedure TForm1.Button2Click(Sender: TObject);
begin
Label2.Caption:=RxDBGrid1.ColumnByFieldName('NAME').Filter.CurrentValues.Text;
end; Смотри пример в ревизии 7166.
- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
А для чего поле LastFilter у формы фильтра rxDBGrid??
Код: Выделить всё
function TrxFilterByForm.Execute(AGrid: TRxDBGrid; var FilterStr: String; var LastFilter: TstringList): Boolean;- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
МОжно ли как-то сделать так, чтобы в форме Filter data были также вычисляемые поля. Как при Filter in Table?
- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
Вот здесь https://disk.yandex.ru/i/ivKNhj64CEj_9w не присутствуют вычисляемые поля в комбобоксе выбора.
Но, что интересно, в filter in table те же самые вычисляемые поля есть и они работают https://disk.yandex.ru/i/YVOBMokXFRFfyw
Добавлено спустя 2 минуты 32 секунды:
Но, что интересно, в filter in table те же самые вычисляемые поля есть и они работают https://disk.yandex.ru/i/YVOBMokXFRFfyw
Добавлено спустя 2 минуты 32 секунды:
Имеется ввиду в форме фильтра rxDBGrid отсутствуют вычисляемые поля (то есть их нет в реальности в базе SQLite, но в ZQuery они есть как вычисляемые у меня). При этом в быстром фильтре эти колонки/поля присутствуют. Может быть их и в эту форму можно также добавить?alexs писал(а):
Re: Фильтр в RxDBGrid
Сообщение alexs » 10.01.2024 09:14:13
А как? Для каждой колонки отдельно? Или просто общий для грида?
- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
Так, ну в общем, мне объяснил Алексей: это фича. Механизмы у обоих фильтров разные
А есть механизм сброса быстрых фильтров? Или только через "колхозить"?
Код: Выделить всё
procedure TFModuleContracts.actGridClearFilterExecute(Sender: TObject);
var
i:integer;
begin
for i:=0 to RxDBGrid1.Columns.Count-1 do
begin
RxDBGrid1.Columns.Items[i].Filter.ClearFilter;
RxDBGrid1.Columns.Items[i].Filter.State:=rxfsAll;
end;
RxDBGrid1.OptionsRx:=RxDBGrid1.OptionsRx-[rdgFilter];
RxDBGrid1.OptionsRx:=RxDBGrid1.OptionsRx+[rdgFilter];
end;
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Добавил метод
По умолчанию после очистки строка фильтра скрывается.
Чтобы оставать AHideFilter = true
Код: Выделить всё
procedure TRxDBGrid.ClearFilter(AHideFilter:Boolean = true);
Чтобы оставать AHideFilter = true
