【问题标题】:How to change properties of a TlistBoxItem in a android app in runtime?如何在运行时更改 android 应用程序中 TlistBoxItem 的属性?
【发布时间】:2014-11-21 13:38:36
【问题描述】:

在我的程序中,我创建了一个函数,它读取博客的 xml 并将标题放在 TListBox 中。但是我需要更改TListBoxItem 中的一些属性,例如字体、高度和颜色,但它不会改变。

如何在运行时设置?

repeat
  Title := ANode.ChildNodes['title'].Text;
  Link := ANode.ChildNodes['link'].Text;
  Desc := ANode.ChildNodes['description'].Text;
  DataPub := ANode.ChildNodes['pubDate'].Text;
  SetLength(Vet_News, Pos + 1);
  Vet_Nesw[Pos] := '<h2>'+Title+'</h2>'+Desc;
  Itemx := TListBoxItem.Create(self);
  Itemx.Text := Title;
  Itemx.ItemData.Detail := DataPub;
  Itemx.ItemData.accessory := TListBoxItemData.TAccessory.aMore;
  Itemx.TextSettings.WordWrap := true;
  Itemx.TextSettings.FontColor := TAlphaColorRec.Darkorange;
  Itemx.Height := 65;
  Itemx.FontColor := TAlphaColorRec.Darkorange; // i tried two ways to change the color
  lbNews.AddObject(Itemx); // lbnews is a Tlistbox 
  Inc(Pos);
  ANode := ANode.NextSibling;
until ANode = nil;

【问题讨论】:

  • 您可能需要更改 TListBox 或列表框项的样式。
  • 另一个想法?只有在运行时我不能更改设置。
  • 通过 StyleLookup(针对项目)?更改项目使用的样式,或更改查找以引用新样式。否则,你能扩展你的问题吗?

标签: android delphi listbox delphi-xe listboxitem


【解决方案1】:

[用 Delphi-XE7 测试] 在运行时,Listboxitems 已经有一个计算样式存储在:aListboxItem.StyledSettings。 要在运行时更改设置,您首先必须将其从样式设置列表中删除。

比如要改FontColor,先去掉styled fontcolor:

aListboxItem.StyledSettings := aListboxItem.StyledSettings - [TStyledSetting.FontColor];

然后应用另一个(假设是绿色):

aListboxItem.FontColor := TAlphaColors.Green;

TStyledSetting 常量和对应的TTextSettings 属性在here in Delphi's doc 中列出。

在运行时更改样式的示例可以在 herethere 找到。

Nota Bene:theListBox.Items[i] 允许访问项目内容,而不是项目本身。 要将 ListboxItem 作为控件抓取,然后对其属性进行操作,您可以使用:

aListboxItem := theListBox.ListItems[i];

aListboxItem := theListBox.ItemByIndex(i);

两者给出完全相同的结果,我不能说是否更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 2018-01-13
    • 1970-01-01
    相关资源
    最近更新 更多