Методы EditRangeStart, EditRangeEnd
procedure EditRangeStart;
procedure EditRangeEnd;
Эти методы предназначены для смены условий фильтрации, установленных ранее с использованием методов соответственно SetRangeStart и SetRangeEnd. Напомним, что сама фильтрация в этом случае выполняется методом Apply Range. Преимущества их использования ясны не всегда. Например, можно было бы предположить, что для рассмотренной в п.8.4.4 ситуации эти методы способны заменить использование CancelRange :
procedure TFormI.ButtonlClick(Sender: TObject);
var GrNumTrnpl, GrNumTmp2 : Integer;
const Num : Integer = 0;
begin
{проверка правильности Edit.Text}
INC(Num) ;
WITH Table1 do begin
IF Num = 1 THEN
begin
SetRangeStart;
FieldByName('GrNum').As Integer:= GrNumTrnp1;
SetRangeEnd;
FieldByName('GrNum').Aslnteger := GrNumTmp2;
ApplyRange;
end
ELSE
begin
EditRangeStart;
FieldByName('GrNum').Aslnteger:= GrNumTrnp1;
EditRangeEnd;
FieldByName('GrNum').Aslnteger := GrNumTmp2;
ApplyRange;
end;
END; {with}
end;
Однако результат будет таким же ошибочным. Указанный код будет правильно работать только в случае, когда индекс по 'GrNum' является принятым по умолчанию и в процессе работы не изменяется (представим, что в показанном выше примере мы удалили переключатели RadioGroupl для выбора текущего индекса). Однако в этом случае правильно работает и код
procedure TForm1.ButtonlClick(Sender: TObject);
var GrNumTrnp1,GrNumTmp2 : Integers;
begin
{проверка правильности Edit1.Text и Edit2.Text}
{фильтрация по начальному и конечному номеру группы}
WITH Tablel do begin
SetRangeStart;
FieldByName('GrNum') .Aslnteger:= GrNumTrnp1;
SetRangeEnd;
FieldByName('GrNum').Aslnteger := GrNumTmp2;
ApplyRange;
END; {with}
end;