Страница 1 из 2
		
			
				Фильтр в RxDBGrid
				
Добавлено: 
22.10.2019 09:50:50 Xenar
				Все привет.
У RxDBGrid есть зело полезная штука как фильтр по содержимому поля колонки. Есть ли возможность получить значение выбора пользователя по фильтру и в каком поле/столбце он это сделал. 
Конечно у грида есть событие OnFiltred но толку от него в данном случаи не вижу.
			 
			
		
			
				Re: Фильтр в RxDBGrid
				
Добавлено: 
22.10.2019 09:57:29 alexs
				Сам фильтр со всеми его полями доступен:
- Код: Выделить всё
- RxDBGrid1.ColumnByFieldName('').Filter. ;
Там можно всю информацию получить.
 
			
		
			
				Re: Фильтр в RxDBGrid
				
Добавлено: 
22.10.2019 11:02:11 Xenar
				alexs писал(а):Сам фильтр со всеми его полями доступен:
- Код: Выделить всё
- RxDBGrid1.ColumnByFieldName('').Filter. ;
Там можно всю информацию получить.
 
Делаю простейшее 
RxDBGrid1.ColumnByFieldName('').Filter.ToString
При выборе значения в фильтре валиться с ошибкой на данную строку.
Что то делаю не так ??
 
			
		
			
				Re: Фильтр в RxDBGrid
				
Добавлено: 
22.10.2019 12:14:05 alexs
				Ну во первых - имя столбца реальное подставлено?
Во вторых - текущие значения фильтра - Filter.CurrentValues
			 
			
		
			
				Re: Фильтр в RxDBGrid
				
Добавлено: 
22.10.2019 16:12:01 Xenar
				alexs писал(а):Ну во первых - имя столбца реальное подставлено?
Во вторых - текущие значения фильтра - Filter.CurrentValues
1. Да конечно
2. CurrentValues - нет такого метода
 
			
		
			
				Re: Фильтр в RxDBGrid
				
Добавлено: 
22.10.2019 16:24:59 alexs
				Это не метод.
Это свойство:
- Код: Выделить всё
-   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.
 
			
		
			
				Re: Фильтр в RxDBGrid
				
Добавлено: 
01.07.2020 12:46:42 Ichthyander
				А для чего поле LastFilter 
- Код: Выделить всё
- function TrxFilterByForm.Execute(AGrid: TRxDBGrid; var FilterStr: String; var LastFilter: TstringList): Boolean;
 у формы фильтра rxDBGrid??
 
			
		
			
				Re: Фильтр в RxDBGrid
				
Добавлено: 
02.07.2020 10:06:53 alexs
				Ichthyander писал(а):А для чего поле LastFilter 
Чтобы последний фильтр можно было отобразить
 
			
		
			
				Re: Фильтр в RxDBGrid
				
Добавлено: 
10.01.2024 01:12:10 Ichthyander
				МОжно ли как-то сделать так, чтобы в форме Filter data были также вычисляемые поля. Как при Filter in Table?
			 
			
		
			
				Re: Фильтр в RxDBGrid
				
Добавлено: 
10.01.2024 09:14:13 alexs
				А как? Для каждой колонки отдельно? Или просто общий для грида?
Я когда  делал фильтр там - орентировался на окно автофильтра из LO Calc.
			 
			
		
			
				Re: Фильтр в RxDBGrid
				
Добавлено: 
10.01.2024 15:47:16 Ichthyander
				Вот здесь 
https://disk.yandex.ru/i/ivKNhj64CEj_9w не присутствуют вычисляемые поля в комбобоксе выбора.
Но, что интересно, в filter in table те же самые вычисляемые поля есть и они работают 
https://disk.yandex.ru/i/YVOBMokXFRFfywДобавлено спустя 2 минуты 32 секунды:alexs писал(а):
Re: Фильтр в RxDBGrid
Сообщение alexs » 10.01.2024 09:14:13
А как? Для каждой колонки отдельно? Или просто общий для грида?
Имеется ввиду в форме фильтра rxDBGrid отсутствуют вычисляемые поля (то есть их нет в реальности в базе SQLite, но в ZQuery они есть как вычисляемые у меня). При этом в быстром фильтре эти колонки/поля присутствуют. Может быть их и в эту форму можно также добавить?
 
			
		
			
				Re: Фильтр в RxDBGrid
				
Добавлено: 
11.01.2024 17:06:02 Ichthyander
				Так, ну в общем, мне объяснил Алексей: это фича. Механизмы у обоих фильтров разные
			 
			
		
			
				Re: Фильтр в RxDBGrid
				
Добавлено: 
01.09.2025 01:20:50 Sharfik
				А есть механизм сброса быстрых фильтров? Или только через "колхозить"?
- Код: Выделить всё
- 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;
 
 
			
		
			
				Re: Фильтр в RxDBGrid
				
Добавлено: 
08.09.2025 15:02:34 alexs
				Надо сделать. Вопрос здравый
			 
			
		
			
				Re: Фильтр в RxDBGrid
				
Добавлено: 
23.10.2025 13:40:00 alexs
				Добавил метод
- Код: Выделить всё
- procedure TRxDBGrid.ClearFilter(AHideFilter:Boolean = true);
 
По умолчанию после очистки строка фильтра скрывается.
Чтобы оставать AHideFilter = true