FireMonkey TListview搜索重新加载问题

时间:2014-08-11 16:43:15

标签: delphi listview firemonkey delphi-xe5

执行搜索时,TListview未正确重新加载,清除搜索,然后重新加载列表视图。使用XE5。

步骤是:

  1. 项目运行后,将文本输入搜索。
  2. 清除搜索,点击"清除"按钮或删除搜索文本或单击搜索" X"按钮。
  3. 按"重新加载"按钮。什么也没出现。您可以单步执行重新加载过程,并查看是否已添加每个项目。但是,结果列表计数为" 0" !!!
  4. 但是,如果您添加搜索文本,则会重新显示这些项目。这太疯狂了。然后再次清除搜索并显示所有项目。按下重新加载按钮,它们就会消失。
  5. 我已经尝试过所有可以解决这个问题的技巧,并且没有任何结果。即使清除搜索,列表视图也会保留搜索内容。
  6. 所以目前listview是一个故障控制。如果您进行搜索,则无法清除搜索并重新加载列表视图。
  7. 我甚至尝试过TSearchBox并设置" DeleteSelection"," ResetSelection"和" ClearSelection" <>这些都不起作用。
  8. 对这个奇怪的事情有任何帮助???

    代码如下:

    procedure TForm1.FormCreate(Sender: TObject);
    var
      i: integer;
      LItem: TListviewItem;
    begin
      if Assigned(Listview1) then
        Listview1.Items.Clear;
      for i := 1 to 20 do
      begin
        LItem := Listview1.Items.Add;
        LItem.Text := IntToStr(i);
      end;
    end;
    
    procedure TForm1.btnButton1Click(Sender: TObject);  { reload button }
    var
      i: integer;
      LItem: TListviewItem;
    begin
      btnButton2Click(btnButton2);                <<<<edit add
      if Assigned(Listview1.Items.Filter) then    <<<<edit add
        Listview1.Items.Filter := nil;            <<<<edit add
      if Assigned(Listview1) then
        Listview1.Items.Clear;
      for i := 1 to 20 do
      begin
        LItem := Listview1.Items.Add;
        LItem.Text := IntToStr(i);
      end;
    end;
    
    procedure TForm1.btnButton2Click(Sender: TObject); { clear button }
    var
      i: integer;
      SearchBox: TSearchBox;
    begin
      for i := 0 to Listview1.Controls.Count - 1 do
        if Listview1.Controls[i].ClassType = TSearchBox then
        begin
          SearchBox := TSearchBox(Listview1.Controls[i]);
          Break;
        end;
      if Assigned(SearchBox) then      
        SearchBox.Text := '';
    end;
    

0 个答案:

没有答案