如何在Delphi 10中独立更改TListView项目的背景颜色?

时间:2018-03-15 23:51:32

标签: listview delphi firemonkey

使用Firemonkey,我创建了一个包含TListView的列表。我想点击它时更改项目的背景颜色,并且即使我点击列表中的其他项目,也必须保留颜色。

示例:如果用户单击项目AAA ,其颜色将更改为绿色。之后,如果用户点击列表中的其他项目,例如项目BBB ,则此第二项的颜色也将变为绿色,第一项保留绿色颜色。

我已经尝试过这段代码,它没有出错,但也没有改变颜色。

procedure TForm1.lvListasItemClickEx(const Sender: TObject; ItemIndex: Integer;
  const LocalClickPos: TPointF; const ItemObject: TListItemDrawable);
var Obj: TFmxObject;
begin
   Obj := ListView1.FindStyleResource('itembackground');
   if Obj <> nil then
   begin
      TColorObject(Obj).Color := TAlphaColorRec.Blue;
   end;
end;

如何更改所选项目的背景颜色?

编辑:Change Alternating Colors in Firemonkey TListView不是这个问题的副本,因为它是关于更改默认交替颜色,而在这里我想要更改个别项目&#39; s 颜色独立于其他项目。

1 个答案:

答案 0 :(得分:0)

我的建议是将TListItemImage添加到listview,将其用作标记或设置其边界以覆盖整个项目并将其用作backgraund。然后,当您单击项目时,更改分配给所选项目的listitemimage对象的图像。

例如:

procedure TForm1.lvListasItemClickEx(const Sender: TObject; ItemIndex: Integer;
  const LocalClickPos: TPointF; const ItemObject: TListItemDrawable);
begin

TListItemImage(TListViewItem(lvListasItem.Selected).Objects.FindDrawable('Image1')).Bitmap := Image1.MultiResBitmap.Items[1].Bitmap;

end;