加载ListViewItems位图会导致崩溃

时间:2014-10-15 15:58:57

标签: android delphi delphi-xe7

正如标题所说,将位图加载到TListViewItems会导致ANDROID应用程序崩溃。适用于iOS,但不适用于Android。图片路径是正确的。为了简单起见,您可以将TImage放到表单上,然后手动设置一个图像,然后尝试而不是像我一样经历循环,只需设置 LItem.bitmap := TImage1.Bitmap。这是我做错了吗?或者有人可以证实这一点,并可能帮助我解决现在的问题。

Delphi XE7 Android

if MenuList.Items.Count=0 then  // load menu options + icons
  begin
    for i := 0 to Length(PicturePaths)-1 do
    begin
      LItem:=MenuList.Items.Add;
      LItem.Text := PictureNames[i];
      LItem.Bitmap.LoadFromFile(TPath.GetHomePath+PathDelim+PicturePaths[i]);
    end;
  end;

1 个答案:

答案 0 :(得分:1)

<强>更新

如果TListView.ItemAppearance.Item.Appearance未设置为以ImageListItem开头的选项之一,则会发生这种情况。在这种情况下,未分配Bitmap属性。

从XE7开始,可以为不同设备的控件设置不同的设置。因此,可以设置ImageListItem和任何其他设备ListItem,您将获得例外。


示例项目中使用的代码:

procedure TForm1.SpeedButton1Click( Sender: TObject );
var
  LItem: TListViewItem;
  LImageFilename: string;
begin
  LItem := ListView1.Items.Add;

  LImageFilename := TPath.Combine( TPath.GetHomePath, 'sample.png' );
  LItem.Text := LImageFilename;
  // just be sure that the file exists and the bitmap is assigned
  if TFile.Exists( LImageFilename ) and Assigned( LItem.Bitmap )
  then
    LItem.Bitmap.LoadFromFile( LImageFilename );
end;

Link to complete project source and compiled apk