在运行时更改列表框项目字体颜色

Changing Listbox item font color at runtime

我正在尝试在运行时更改 ListBoxItem 的字体颜色。通过使用 FontColor 属性,我可以在设计时毫无问题地更改颜色,但我需要在运行时更改字体颜色。下面的例子没有改变字体颜色。

var
    ListBoxItem : TListboxItem;
begin
    ListBoxItem := TlistBoxItem.Create(ListBox1);

    ListBoxItem.Text := Edit1.Text;
    ListBoxItem.ItemData.Detail := Edit2.Text;
    ListBoxItem.StyleLookup := 'listboxitembottomdetail';
    ListBoxItem.TextSettings.FontColor := TAlphaColorRec.Blue;
    ListBoxItem.Height := 34;
    ListBox1.AddObject(ListBoxitem);

end;

上面的代码应该用定义的颜色向 ListBox1 添加一个项目,但它只是添加了具有默认字体颜色的项目。

以下是针对 Delphi 10.1 Berlin

测试的

为了同时更改正常和详细字体颜色,您可以使用 StyleLookup 属性 和您自己的自定义样式。

在设计时在您的主窗体中创建一个 TListBox 并添加一个 TListBoxItem。 转到 TListBoxItem 的属性并将 StyleLookup 设置为 listboxitembottomdetail。在此之后右键单击 TListBoxItem 并选择 Edit custom style...

现在在样式设计器中打开树 ListBoxItem1Style1。 在这里您会找到文本和详细信息项。可以将字体颜色调整为您想要的任何颜色。 一定要保存。

然后在添加样式后,您可以将代码调整为如下所示:

var
    ListBoxItem : TListboxItem;
begin
    ListBoxItem := TListBoxItem.Create(ListBox1);
    ListBoxItem.Text := Edit1.Text;
    ListBoxItem.ItemData.Detail := Edit2.Text;
    ListBoxItem.StyleLookup := 'ListBoxItem1Style1';
    ListBoxItem.Height := 34;
    ListBox1.AddObject(ListBoxitem);
end;