Методы EditRangeStart, EditRangeEnd
Эти методы предназначены для смены условий фильтрации, установленных ранее с использованием соответственно методов SetRangeStart и SetRangeEnd. Напомним, что сама фильтрация в этом случае выполняется методом ApplyRange. Преимущества их использования ясны не всегда. Например, можно было бы предположить, что для рассмотренной в п.7.5.4 ситуации эти методы способны заменить использование CancelRange:
procedure TForm1.ButtonlClick(Sender: TObject);
Var
GrNumTmpl,GrNumTmp2: Integer;
const
Num: Integer =0;
Begin
inc(Num) ;
with Table 1do
Begin
ifNum = 1then
Begin
SetRangeStart;
FieldByName('GrNum').AsInteger:= GrNumTmp1;
SetRangeEnd;
FieldByName('GrNum').AsInteger := GrNumTmp2;
Apply Range;
End else
Begin
EditRangeStart ;
FieldByName('GrNum').AsInteger:= GrNumTmpI;
EditRangeEnd;
FieldByName('GrNum').AsInteger :.= GrNumTmp2;
ApplyRange;
End
end; {with}
end;
Однако результат будет таким же ошибочным. Указанный код будет правильно работать только в случае, когда индекс по GrNum является принятым по умолчанию и в процессе работы не изменяется (представим, что в показанном выше примере мы удалили переключатели RadioGroup1 для выбора текущего индекса). Однако в этом случае правильно работает и такой код
procedure TForm1.ButtonlClick(Sender: TObject);
Var
GrNumTmp1,GrNumTmp2: Integer;
begin
with Table1do
Begin
SetRangeStart;
FieldByName('GrNum').AsInteger:= GrNumTmp1;
SetRangeEnd;
FieldByName('GrNum').AsInteger := GrNumTmp2;
ApplyRange;
end; {with}
end;
Свойство KeyExclusive
Свойство KeyExclusive применяется для фильтрации записей в TTable с использованием методов SetRangeStart, SetRangeEnd и EditRangeStart, EditRangeEnd.
Свойство KeyExclusive влияет на включение в отфильтрованный НД записей, у которых индексные поля содержат граничные значения диапазона фильтрации. KeyExclusive включается и отключается отдельно для начального и конечного условия фильтрации.
Если в свойство KeyExclusive для данной границы диапазона фильтрации (верхней или нижней) установлено значение False, записи, содержащие в индексном поле (полях) значение, указанное в качестве данной границы диапазона, включаются в отфильтрованный НД, в противном случае не включаются. По умолчанию применяется значение False. Например:
with Table1 do
Begin
CancelRange;
SetRangeStart;
KeyExclusive := True;
FieldByName('GrNum').AsInteger:= GrNumTmpl;
SetRangeEnd;
FieldByName('GrNum').As Integer := GrNumTmp2;
ApplyRange;
end; {with}