Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么firemonkey控件总是声称在iOS上有子控件?_Ios_Delphi_Infinite Loop_Firemonkey_Delphi Xe8 - Fatal编程技术网

为什么firemonkey控件总是声称在iOS上有子控件?

为什么firemonkey控件总是声称在iOS上有子控件?,ios,delphi,infinite-loop,firemonkey,delphi-xe8,Ios,Delphi,Infinite Loop,Firemonkey,Delphi Xe8,我正在研究在面板内部动态创建控件(TImageControl)(以及作为试用/出错的一部分,其他容器控件)。其中一部分,我有一段代码,首先清除旧图像: procedure TfrmImageView.Clear; begin while sbImages.ControlsCount > 0 do sbImages.Controls[0].DisposeOf; end; 这在Windows上非常有效。然而,当我在iPad上运行它时,它会陷入一个连续的循环,因为出于某种原因,co

我正在研究在面板内部动态创建控件(
TImageControl
)(以及作为试用/出错的一部分,其他容器控件)。其中一部分,我有一段代码,首先清除旧图像:

procedure TfrmImageView.Clear;
begin
  while sbImages.ControlsCount > 0 do
    sbImages.Controls[0].DisposeOf;
end;
这在Windows上非常有效。然而,当我在iPad上运行它时,它会陷入一个连续的循环,因为出于某种原因,
controlScont
总是1。事实上,即使我从来没有在那里放过任何控件,这种情况也会发生


为什么此报告总是1个控件?

PS-通过将引用存储在列表中来解决,但仍然很奇怪为什么它总是说只有一个控件。如果您使用
Panel1.Controls[0]查看该面板的第一个子控件的类名,则会发现ClassName您将发现该控件的类名是TStyledPresentation,它是components样式系统工作所需的基本控件。事实上,如果您对其他FMX组件进行类似的检查,您将得到类似的结果。此外,您的代码也有潜在的危险,因为您正在将面板子控件类型转换为TImageControl,这是不好的。为什么?问问自己,如果在面板上放置其他组件,会发生什么情况。您可能试图使用错误的类接口访问该组件,这可能导致以错误的方式读取和写入数据,从而导致各种不可预见的后果。这样的bug可能很难追踪。@SilverWarior我将其命名为
TImageControl
,仅用于解决问题的试验,因为当时我并不认为它们真的被摧毁了。本来就没有。它过去也是免费的。演员阵容很奇怪。处置是从托宾开始的。使用checked casts.PS-通过将引用存储在列表中来解决,但仍然很好奇为什么它总是说只有一个控件。如果您使用
Panel1.Controls[0]查看该面板的第一个子控件的类名,则会发现ClassName您将发现该控件的类名是TStyledPresentation,它是components样式系统工作所需的基本控件。事实上,如果您对其他FMX组件进行类似的检查,您将得到类似的结果。此外,您的代码也有潜在的危险,因为您正在将面板子控件类型转换为TImageControl,这是不好的。为什么?问问自己,如果在面板上放置其他组件,会发生什么情况。您可能试图使用错误的类接口访问该组件,这可能导致以错误的方式读取和写入数据,从而导致各种不可预见的后果。这样的bug可能很难追踪。@SilverWarior我将其命名为
TImageControl
,仅用于解决问题的试验,因为当时我并不认为它们真的被摧毁了。本来就没有。它过去也是免费的。演员阵容很奇怪。处置是从托宾开始的。使用选中的类型转换。