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

Begin

if Num = 1 then

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 Table1 do

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}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: