当您进行搜索时,TListview 无法正确重新加载,请清除搜索,然后重新加载列表视图。使用XE5。
步骤是:
- 项目运行后,在搜索中输入文本。
- 单击“清除”按钮或删除搜索文本或单击搜索“X”按钮清除搜索。
- 按“重新加载”按钮。什么也没有出现。您可以逐步执行重新加载过程并看到每个项目均已添加。然而,结果列表计数为“0”!
- 但是,如果您重新添加搜索文本,则项目会重新出现。这太疯狂了。然后您再次清除搜索,所有项目都会出现。点击重新加载按钮,它们就会消失。
- 我已经尝试了所有可以解决这个问题的技巧,但一无所获。即使您清除搜索,列表视图也会保留搜索内容。
- 所以目前列表视图是一个有故障的控件。如果您进行搜索,则无法清除搜索并重新加载列表视图。
- 我什至尝试过 TSearchBox 并设置“DeleteSelection”、“ResetSelection”和“ClearSelection”这些都不起作用。
对于这个奇怪的事情有什么帮助吗???
代码如下:
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;
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)