红鱼儿

Error reading TAppearanceObjectItem.Appearance.Font.Size:Invalid property path

上午升级到Delphi 11.1的patch 1,还是遇到Listview继承的问题,在Android平台上运行,会产生标题的错误:

已经提交到QC:https://quality.embarcadero.com/browse/RSP-38076,方便就帮我投个票,促进官方解决。(今天就被Open了,感谢大家的支持!)

查了大半天,发现原因:重新定义继承来的listview中Text控件的Font属性导致的

具体操作如下:

1.建一个TFrame1,放上Listview,设置

 

2.从这个Frame继承一个子Frame,并修改Text1的字体大小,修改任意属性都行,保存这个单元:

查看一下FMX文件,会发现修改信息写入了对应的FMX文件,正因为如此才造成的问题:

inherited Frame3: TFrame3
  inherited ListView1: TListView
    ItemAppearanceObjects.ItemObjects.ObjectsCollection = <
      item
        AppearanceObjectName = 'Text1'
        AppearanceClassName = 'TTextObjectAppearance'
        Appearance.Font.Size = 18.000000000000000000
        Appearance.TextAlign = Leading
        Appearance.Width = 265.000000000000000000
        Appearance.Height = 44.000000000000000000
        Appearance.PlaceOffset.X = 14.000000000000000000
      end>
  end
end

3.调用继承来的子类:

procedure TForm1.ShowFrame3Click(Sender: TObject);
var
  f: TFrame3;

begin
  try
    f := TFrame3.Create(Self);
    f.Parent := Rectangle1;
    f.Align := TAlignLayout.Client;
  except
    on e: Exception do
    begin
      ShowMessage(e.Message);
    end;
  end;

end;

在android上运行,点按钮来显示这个Frame3,错误就产生了。

这个问题,只在Android上有,在Windows上是正常的,我没有iOS和mac OS环境,无法测试。

进一步测试,修改Text.Font属性才会有问题:

ChinaCock作者真是利害,搞定了这个问题!是打死也想不到的办法!去QC:https://quality.embarcadero.com/browse/RSP-38076上看吧,我写到哪里了!

 

posted on 2022-04-28 14:31  红鱼儿  阅读(462)  评论(0编辑  收藏  举报