![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с отображением числа записей отфильтрованной таблицы [D5, dBase, FoxPro]
Мефодий © (2003-08-14 16:45:00)
Есть DBF таблица Table1.
На Form1 разместил DBGrid 1, Edit1 и Label1.
Прописаны следующие события.
procedure TForm1.Edit1Change(Sender: TObject);
begin
with Table1 do
begin
if Length(Edit1.Text) = 0 then
begin
Filtered := False;
Label1.Caption := IntToStr(RecordCount);
First;
Exit;
end;
Filtered := True;
Label1.Caption := IntToStr(RecordCount);
end;
end;
procedure TDM.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
Accept := Pos(Edit1.Text,Table1.FieldByName("A").AsString)) > 0
end;
При первом вхождении в программу и начале набора текста в Edit1 все нормально, т.е. число записей в Label1.Caption последовательно уменьшается и соответствует числу записей, отображаемых в DBGrid1. Когда же нажимаю Backspace, число отображаемых в DBGrid1 записей, естественно, увеличивается, однако Label1.Caption свое значение не меняет. Более того, если при Length(Edit1.Text) = 0 оно правильно отображает общее число записей неотфильтрованной таблицы, то при повторном наборе текста вообще начинает показывать ерунду. В чем тут дело ? Если кто встречался с такой проблемой прошу отозваться. Заранее благодарен.
Мефодий (2003-08-15 20:51:00) [1]
>> А он и не поможет. Если сразу то Exit
Exit только в случае пустой строки.
Johnmen (2003-08-15 12:26:00) [2]
А он и не поможет. Если сразу то Exit. :)))
Мефодий (2003-08-15 12:23:00) [3]
>>Как пробовал ? Код ?
procedure TForm1.Edit1Change(Sender: TObject);
begin
with Table1 do
begin
Filtered := False;
if Length(Edit1.Text) = 0 then
begin
Label1.Caption := IntToStr(RecordCount);
First;
Exit;
end;
Filtered := True;
Label1.Caption := IntToStr(RecordCount);
end;
end;
Не помогает и First.
Anatoly Podgoretsky (2003-08-15 10:08:00) [4]
Еще иногда надо перемещеие, First
Johnmen (2003-08-15 10:05:00) [5]
Как пробовал ? Код ?
Мефодий (2003-08-15 09:42:00) [6]
Пробовал, не помогает !
Anatoly Podgoretsky (2003-08-14 16:58:00) [7]
Значит оно изменяется после срабатывания данного обработчика
попробуй
Filtered := False;
Filtered := True;
может поможет