上午升级到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上看吧,我写到哪里了!