当我在Delphi中打开ComboBox列表时,如何使SearchBox可见

时间:2015-11-17 10:29:50

标签: delphi combobox firemonkey search-box

我正在使用Delphi 10 Seattle创建多设备软件(Win32)(Firemonkey)。 如何在ComboBox中显示列表时,如何显示SearchBox。 我用ListBoxItems填充代码中的ComboBox。请参阅下面的示例。 现在,SearchBox显示在已关闭的ComboBox上。

procedure AddItems;
var
  SearchBox: TSearchBox;
  Item: TListBoxItem;
begin
  ComboBox.Items.Clear;
  SearchBox := TSearchBox.Create(ComboBox);
  SearchBox.Align := TAlignLayout.Contents;
  SearchBox.Parent := ComboBox;
  SearchBox.Visible:=True;
  Item := TListBoxItem.Create(ComboBox);
  Item.Parent := ComboBox;
  Item.Text := 'Item 1';
  Item := TListBoxItem.Create(ComboBox);
  Item.Parent := ComboBox;
  Item.Text := 'Item 2';
end;

1 个答案:

答案 0 :(得分:0)

使用TComboBox事件OnPopup& OnClosePopup

将ScrollBox声明移动到私有表单(或框架)部分,并在OnCreate表单事件(或框架构造函数)中创建它。

type
  THeaderFooterForm = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    FSearchBox: TSearchBox;
  end;

procedure THeaderFooterForm.FormCreate(Sender: TObject);
begin
  FSearchBox := TSearchBox.Create(nil);
  FSearchBox.Align := TAlignLayout.Contents;
  FSearchBox.Parent := ComboBox;
  FSearchBox.Visible:=False;
end;

procedure THeaderFooterForm.ComboBoxClosePopup(Sender: TObject);
begin
  FSearchBox.Visible:=False;
end;

procedure THeaderFooterForm.ComboBoxPopup(Sender: TObject);
begin
  FSearchBox.Visible:=True;
end;