可以使用VCL TListView的自定义绘图,它允许您使用将TColor
置于Data
的相当狡猾的方法为单个项目着色(here is an example项。)
但是,在TListVew
控件的XE7 FMX版本中,没有OnCustomDraw
事件。我尝试了一些选项,但似乎没有什么改变颜色。我该怎么做?
答案 0 :(得分:5)
您可以使用TListViewItem.Objects.DetailObject.TextColor
属性更改每个列表项文本的颜色。但是没有用于更改每个列表项的背景颜色的原生属性。
相应于TListView Items background color:
如何更改TListView项目的背景颜色?
...
你必须使用一种风格。所以添加一个样式书,或者使用其中一个 Delphi附带的样式或右键单击listview"编辑自定义 风格"制作风格。 dubbleclick在样式簿上打开风格 并修改listviewstyle。
但这并没有解释如何为每个列表项应用不同的样式。
答案 1 :(得分:3)
每个项目都有一个OnPaint事件。分配如下的事件处理程序。
procedure TfrmModelArchiver.lst1Paint(Sender: TObject; Canvas: TCanvas;
const ARect: TRectF);
begin
Canvas.Fill.Color := TAlphaColorRec.Red;
Canvas.FillRect(ARect, 0, 0, AllCorners, 0.2);
end;
在此事件处理程序中,不透明度设置为0.2,因此文本可以显示。如果将不透明度设置为1,则需要编写文本以及绘制背景,如下所示。
procedure TfrmModelArchiver.lst1Paint(Sender: TObject; Canvas: TCanvas;
const ARect: TRectF);
begin
Canvas.Fill.Color := TAlphaColorRec.Red;
Canvas.FillRect(ARect, 0, 0, AllCorners, 1);
Canvas.Fill.Color := TAlphaColorRec.Black;
Canvas.FillText(ARect, 'some text', False, 1, [],
TTextAlign.taLeading);
end;
答案 2 :(得分:3)
Here是解决方案。
这个现代的ListView组件适用于Android,IOS,OSX和Windows上的带有FireMonkey的Delphi 10 Berlin。一个很好的功能是它具有水平和垂直模式。 SetColorItemSelected,SetColorItemFill,SetColorBackground,SetColorItemSeparator,SetColorText,SetColorTextSelected,SetColorTextDetail,SetColorHeader,SetColorTextHeader以及许多其他属性。