Статьи Королевства Дельфи

       

Использование SetRange


Метод procedure SetRange(const StartValues, EditValues: array of const);
показывает не только записи, индексные поля которых лежат в диапазоне [StartValues..EndValues].

Пример: Пусть в наборе данных Table1 показываются все записи. Включим в структуру записинабора данных два поля: "Номер группы" и "Наименование товара". Пусть итекущий индекс построен по полю "Номер группы".

Напишем такой обработчик события: CheckBox1.Click:

procedure TForm1.CheckBox1Click(Sender: TObject);
var GrNumTmp: Integer;
begin
If CheckBox1.Checked then
begin
GrNumTmp := StrToInt(Edit1.Text);
With Table1 do
begin
CancelRange;
SetRange([GrMunTmp],[GrNumTmp]);
end;
end else
Table1.CancelRange;
end;

В отфильтрованном наборе данных показываются только те записи, индексное поле текущего индекса у которых (в нашем случае "Номер группы") имеет значение, лежащее в заданном диапазоне. В данном случае диапазон определяется переменной GrNumTmp. Поэтому для GrNumTmp = 3 будут показаны записи, принадлежащие к группе 3.

Если бы мы захотели, чтобы в наборе данных фильтровались записи из нескольких групп, то нам следовало бы добавить в форму второй компонент Edit2, в котором вводился бы номер конечной группы, в то время как в Edit1 вводился бы номер начльной группы:

procedure TForm1.CheckBox1Click(Sender: TObject);
var GrNumTmp1, GrNumTmp2: Integer;
begin
If CheckBox.Checked then
begin
GrNumTmp1 := StrToInt(Edit1.Text);
GrNumTmp2 := StrToInt(Edit2.Text);
With Table1 do
begin
CancelRange;
SetRange([GrNumTmp1],[GrNumTmp2]);
end;
end else
Table1.CancelRange;
end;

Александр Мефодьев [29.01.2000] (Специально для "Королевства")

ICQ: 56666220



Содержание раздела