首页 > 解决方案 > FMX 将图像从资源加载到列表视图对象会导致访问冲突

问题描述

我有一个动态外观的 TListview。我添加了一个图像对象,现在我试图将资源中的图像加载到这个图像对象上,但我不断遇到访问冲突。

我的代码:

procedure TfrmMain.btnAddPlayerClick(Sender: TObject);
var
  ListItem: TListViewItem;
  imgBanned: TListItemImage;
  InStream: TResourceStream;
begin
  InStream := TResourceStream.Create(HInstance, 'banned', RT_RCDATA);
  lvPlayers.BeginUpdate;
  try
    ListItem := lvPlayers.Items.Add;
    imgBanned := ListItem.Objects.FindObjectT<TListItemImage>('imgBanned');
    imgBanned.Bitmap.LoadFromStream(InStream);
  finally
    lvPlayers.EndUpdate;
    InStream.Free;
  end;
end;

编辑:调试后我得到以下信息,但我不知道这意味着什么。我看到它与 GetFieldAddress 有关,但我不确定这是什么

在此处输入图像描述 在此处输入图像描述

标签: delphifiremonkey

解决方案


您需要创建自己的位图,然后设置 TImageListItem.Bitmap 以引用它,以便以编程方式加载图像。

查看有关 TListViewItem.Bitmap 属性的文档,了解如何正确处理此问题 http://docwiki.embarcadero.com/Libraries/Tokyo/en/FMX.ListView.Appearances.TListViewItem.Bitmap


推荐阅读