Setfocus到tlistview中的搜索框

时间:2015-12-03 20:52:08

标签: delphi firemonkey delphi-10-seattle tlistview

我在西雅图工作,只为Windows编写FM应用程序。

我在表单上有一个tlistview,并填充了数据。

我已启用搜索选项。

如何以编程方式将焦点设置到搜索框?

如何增加搜索框的大小和字体大小?

感谢

1 个答案:

答案 0 :(得分:2)

搜索框不能以编程方式访问,除非将其设置为可见并在更改时触发事件。否则,它只能由用户访问。 因此,访问涉及一点点。但是,OnSearchChange事件的example启发了以下答案:

uses ..., FMX.SearchBox;

type
  TForm17 = class(TForm)
    ListView1: TListView;
    Button1: TButton;
    Label1: TLabel;
    ...
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    sb: TSearchBox; // a local reference
  ...
  end;

implementation

procedure TForm17.Button1Click(Sender: TObject);
begin
  if Assigned(sb) then
    sb.SetFocus;
end;

procedure TForm17.FormCreate(Sender: TObject);
var
  i: integer;
begin
  ListView1.SearchVisible := True; // or set in the Object Inspector at design time
  for i := 0 to ListView1.Controls.Count-1 do
    if ListView1.Controls[I].ClassType = TSearchBox then
    begin
      sb := TSearchBox(ListView1.Controls[i]);
      Break;
    end;
end;

procedure TForm17.ListView1SearchChange(Sender: TObject);
begin
  if Assigned(sb) then
    Label1.Text := sb.Text;
end;

在表单创建时,我们搜索SearchBox控件,如果找到,我们会在sb: TSearchBox;字段中存储对它的引用。然后访问非常简单。