从DataSnap服务器获取数据后,ListView过滤器不工作
问题描述:
我有一个在Delphi西雅图制作的应用程序,并且我移植到Delphi东京。但我在ListView中的搜索不再正常工作。 在第一次使用时,它能正常工作,我筛选一条记录并进行编辑。我将数据发送到datasnap服务器并再次获取所有记录以刷新列表视图。但是,如果我尝试再次搜索,它不会再找到记录,但是浏览listview我可以找到记录。从DataSnap服务器获取数据后,ListView过滤器不工作
显然,当我重新加载数据时没有出现在屏幕上的所有记录都未被过滤。如果我手动导航到记录并执行搜索,那么它工作。
我的代码来自的DataSnap检索数据并显示在列表视图:
DadosSocio := F_ClientModule.ServerMethods1Client.GetSocio(0);
Assert(TFDJSONDataSetsReader.GetListCount(DadosSocio) = 1);
mem_Socios.Close;
mem_Socios.AppendData(TFDJSONDataSetsReader.GetListValue(DadosSocio, 0));
mem_Socios.Open;
lvSocios.ScrollTo(0);
lvSocios.ScrollViewPos := 0;
我使用此代码清洁过滤器:
for I := 0 to lvSocios.Controls.Count-1 do
Begin
if lvSocios.Controls[I].ClassType = TSearchBox then
begin
TSearchBox(lvSocios.Controls[I]).Text := '';
end;
End;
我试图用这个代码来清理过滤网,但它返回错误Argument out of Range
:
lvSocios.Items.Filter := nil;
答
我解决了我的问题以下代码:
var
I: Integer;
begin
for I := 0 to ListView.Controls.Count-1 do
Begin
if ListView.Controls[I].ClassType = TSearchBox then
begin
TSearchBox(ListView.Controls[I]).Text := '';
end;
End;
ListView.Items.Filter := nil;