2017-09-25 62 views
0

我有一個在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; 

回答

0

我解決了我的問題以下代碼:

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;