Вниз
Скачать: CL | DM;

Теоретический вопрос про фильтры   Найти похожие ветки 

 
VAleksey ©   (2002-06-14 09:47) [0]

Можно ли на отфильтрованную таблицу наложить еще один фильтр не снимая старый ?


 
Lord Warlock ©   (2002-06-14 09:55) [1]

Естественно можно.

Например у тебя фильтр записан в событии OnFilterRecords,
в свойство Filter пишешь еще один и они работают вместе


 
VAleksey ©   (2002-06-14 10:07) [2]


> Lord Warlock © (14.06.02 09:55)

ЭЭЭ дарагой -) не нада мне такие варианты предлагать ! -) Эт я и сам знаю. Чай не одну книгу прочитал.
Поясню. Вопрос практической значимости не имеет. Имеется в виду OnFilterRecord.
PS
Cкорее всего нельзя, но интересно... а вдруг ?


 
Lola ©   (2002-06-14 10:47) [3]

Пробовала - нельзя, даже если очень нужно. Ведь в св-во Filter переменную не запихнешь.


 
AlexSV   (2002-06-14 10:51) [4]

> VAleksey ©

Можно.
Вот только реализация будет зависеть от конкретной задачи.

Решение в лоб:

type
TFilterForm = class(TForm)
...
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
procedure OnNewFilterRecord(DataSet: TDataSet; var Accept: Boolean);
...
end;

var
OnOldOnFilterRecord : TFilterRecordEvent;

procedure TFilterForm.FormShow(Sender: TObject);
begin
//привязываем свой фильтр
OnOldOnFilterRecord := Query1.OnFilterRecord;
Query1.OnFilterRecord := OnNewFilterRecord;
end;

procedure TFilterForm.OnNewFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
if Assigned(OnOldOnFilterRecord) then
OnOldOnFilterRecord(DataSet, Accept);
if Accept then begin
// Здесь фильтруешь что надо
end;
end;

procedure TRLightSeek.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// подчищаем после себя
Query1.OnFilterRecord := OnOldOnFilterRecord;
end;

При этом надо учесть, что в данный момент никто больше с твоим
Query не работает, а то ...


 
AlexSV   (2002-06-14 10:54) [5]

Пардон, опечатался

procedure TRLightSeek.FormClose(Sender: TObject; var Action: TCloseAction);

естественно

procedure TFilterForm.FormClose(Sender: TObject; var Action: TCloseAction);

резал из разных юнитов.


 
Val ©   (2002-06-14 11:15) [6]

>VAleksey © (14.06.02 09:47)
странный несколько вопрос-от меня суть несколько ускользает, похоже - ведь наложение еще одного фильтра, без снимания старого - это динамическое добавление к существующему фильтру дополнительных условий, но в любом случае, это его переопределение?


 
VAleksey ©   (2002-06-14 12:36) [7]


> Val © (14.06.02 11:15)

Щас только с футбола (- , но это лирика.
И да и нет.
1-й фильтр по одному условию, а 2-й по другому, а 3-й по третьему, а в одну процедуру их не запихаешь т.к. много проверок надо. Вот так вот.


 
roottim   (2002-06-14 14:28) [8]

никак!
только select from select...


 
vuk ©   (2002-06-14 15:19) [9]

В BDE, помнится, фильтры были каскадные и могли накладываться друг на друга...


 
Lord Warlock ©   (2002-06-14 15:26) [10]

Я например делал динамическое формирование св-ва Filter в зависимости от выбранных чекбоксов в TCheckboxList, причем их кол-во было не постоянным. То же можно сделать и для OnFilterRecord


 
Andy First   (2002-06-14 15:40) [11]

Можно в TQuery задать свойство Filter, а затем использовать SELECT. В итоге получится фильтр от выборки.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.008 c
14-23791
lipskiy
2002-06-08 19:56
2002.07.08
Совсем не в тему: тусовки рекламистов инете - никто не знает?


1-23622
Toniel
2002-06-24 16:38
2002.07.08
Большой текстовый файл


4-23844
Manulo
2002-05-10 11:27
2002.07.08
Скрипер ПК


1-23535
Mic_2000
2002-06-26 03:43
2002.07.08
Переменная в ехе файле


4-23847
Sergey_001
2002-05-11 07:16
2002.07.08
Хэндл окна.




   Наверх