2017-09-25 12 views
0

저는 Delphi Seattle에서 만든 응용 프로그램을 가지고 있으며 Delphi Tokyo로 마이그레이션했습니다. 그러나 ListView 내 검색이 더 이상 제대로 작동하지 않습니다. 처음 사용할 때 제대로 작동하고 레코드를 필터링하고 편집합니다. 데이터를 datasnap 서버로 보내고 모든 레코드를 다시 가져와 listview를 새로 고칩니다. 그러나 다시 검색하려고하면 더 이상 레코드를 찾지 않지만 목록보기를 탐색하면 레코드를 찾을 수 있습니다.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;