从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;