Методы 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}