【问题标题】:How can I add a ListBoxItem programmatically?如何以编程方式添加 ListBoxItem?
【发布时间】:2015-10-22 15:13:45
【问题描述】:

我只能通过点击组件 -> Items Editor 找到如何创建ListBoxItem

我们如何使用Firemonkey 以编程方式创建ListBoxItem

【问题讨论】:

    标签: android ios delphi firemonkey listboxitem


    【解决方案1】:

    只需创建列表框项,并将其添加到列表框中:

    var
      ListBoxItem: TListBoxItem;
    begin
      ListBoxItem := TListBoxItem.Create(ListBox1);
      ListBoxItem.Text := 'foo';
      // set other properties of the list box item at this point
      ListBox1.AddObject(ListBoxItem);
    end;
    

    【讨论】:

    • 列表框项也可以插入到列表中的任何位置,使用:ListBox1.InsertObject(index, ListBoxItem)
    • 这是正确答案,另一个答案很糟糕。 “其他属性”将包括项目字体大小,与 VCL 不同的是,它是每个项目,而不是每个控件。
    【解决方案2】:

    假设ListBoxItem 是一个名为ListBox1 的现有TListBox 组件的项,则可以这样添加该项:

    ListBox1.Items.Add('an item name');
    

    另一种选择:

    var
      id: Integer;
    
      . . .
    
      ListBox1.Items.AddObject('an item name', TObject(id));
    

    编辑 请注意,仅当基础列表未排序时,此方法才被视为有效。

    【讨论】:

    • 这是一个 VCL 答案,但它是一个 FMX 问题。问题是,我们如何使用 Firemonkey 以编程方式创建 ListBoxItem?
    • @DavidH 用FMX.ListBox.TListBox测试
    • 框架将 Items.AddObject 转换为创建 TListBoxItem 并添加它的代码。作为一种方便。但是如果你直接创建TListBoxItem,你可以用它做更多的事情,而不仅仅是添加文本和数据。
    • @DavidH Items.Add 确实可以用作方便;在任何情况下都可以使用ListBox1.ListItems[n] 获得列表框项
    • 当然。但是如果你想在添加项目的时候设置文本和数据以外的东西,那么就缺少方便的方法了。
    猜你喜欢
    • 2015-05-01
    • 2016-11-23
    • 2012-09-16
    • 2014-07-03
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多