修正 XE6 TListView 上方 SearchBok 右边的清除钮显示

注意:XE7 已修正这个问题。

Delphi Firemonkey TListView 提供了搜寻的功能,但在 XE6 以前的版本,可以显示右边的清除按钮,在 XE6 确消失了,这里提供一个修正的方案,供大家参考。

1、放一个 TListView 后,将 SearchVisible 设为 True ,就能看到上方的搜寻功能。

2、运行后,在没有输入任何文字的情况下,不会有右边的清除按钮。

3、输入一些文字后,就能看到右边的清除按钮,在还没有修正前,是看不到这个清除按钮的

修正方法:

请将源码 FMX.Edit.pas 复制到自己的工程目录里,再进行修改。

找到 TSearchBox.DoChangeTracking 函数,在最后加入一行,如下:

procedure TSearchBox.DoChangeTracking;
var
  Lower: string;
begin
  inherited;
  Lower := LowerCase(Text.Trim);
  if FResponder <> nil then
    FResponder.SetFilterPredicate(
      function(X: string): Boolean
      begin
        Result :=
          (Lower = EmptyStr) or
            LowerCase(X).Contains(Lower);
      end);
{+++>}RealignButtonsContainer; // 加入这一行
end;
原文地址:https://www.cnblogs.com/onechen/p/3780112.html