如何在运行时更改Android应用程序中的TlistBoxItem的属性?

时间:2014-11-21 13:38:37

标签: android delphi listbox delphi-xe listboxitem

在我的程序中,我创建了一个函数,它读取博客的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;

1 个答案:

答案 0 :(得分:0)

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

例如,如果要更改FontColor,请先删除样式化的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);

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