在我的程序中,我创建了一个函数,它读取博客的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;
答案 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。
Nota Bene:theListBox.Items[i]
可以访问项目内容,而不是项目本身。
要将ListboxItem作为控件获取,然后对其属性执行操作,可以使用:
aListboxItem := theListBox.ListItems[i];
或
aListboxItem := theListBox.ItemByIndex(i);
两者给出完全相同的结果,我不能说一个是否更好。