delphi - 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 有关,但我不确定这是什么
解决方案
您需要创建自己的位图,然后设置 TImageListItem.Bitmap 以引用它,以便以编程方式加载图像。
查看有关 TListViewItem.Bitmap 属性的文档,了解如何正确处理此问题 http://docwiki.embarcadero.com/Libraries/Tokyo/en/FMX.ListView.Appearances.TListViewItem.Bitmap
推荐阅读
- android - Android Room Inner Join 选择多行
- android - 从 android 或 iOS 将参数传递给颤振模块
- python - Jupyter Notebook 5.7.5 版已安装,但出现错误
- image-processing - 像素化图像中的边缘检测
- javascript - 如何使用 webpack for AppSource 上传 Dynamics webresource 构建?
- c# - 使用 ASP.NET Core 的 ViewEngine 在 Controller 之外生成 HTML
- c++ - 两个不起眼的 MSVC++ 2017 (15.9.28307.905) 编译器问题
- powerbi - MAPE 的 Power BI 表中的总计不正确
- express - 我如何从对象将值传递给把手模板中的 inArray 助手
- javascript - 在应用程序或组件加载 Angular 7 之前运行服务