【发布时间】:2021-07-12 10:56:48
【问题描述】:
我正在使用 FMX 构建应用程序。此应用可在 Windows、Mac OSX 和 Linux 上运行。
我需要克隆一个 TPanel,它包含在另一个 TPanel 中。
FMX 提供的克隆函数报错:
找不到类 TForm1。
如何在 FMX 应用中克隆TPanel?
这是我正在使用的代码:
procedure TForm1.Button1Click(Sender: TObject);
var
CurrentControl, ClonedControl: TFMXObject;
CtlrNameCnt: String;
begin
CtlrNameCnt := IntToStr(Panel1.ControlsCount);
CurrentControl := Panel1;
ClonedControl := Clone(CurrentControl); //<- this gives error
ClonedControl.name := CurrentControl.name + '_' + CtlrNameCnt;
ClonedControl.Parent := Panel1;
end;
【问题讨论】:
-
如果是 VCL 我会尝试
RegisterClass(TForm1)。 -
将有助于备份和发布您的原始问题/错误,而不仅仅是您正在尝试的解决方案中的某些内容。猜测您的原始错误类似于
[dcc32 Error] Unit1.pas(30): E2010 Incompatible types: 'TPanel' and 'TFmxObject',然后您将 CurrentControl 的声明添加为 TFMXObject 以解决该错误。 -
在您的代码中,您实际上是在克隆 TForm1 而不是面板。目前还不清楚应该克隆什么以及克隆的父级应该是什么。
-
Clone实际上是Self.Clone并且您传递的参数成为克隆对象的所有者。不是你想要的。 -
@Brain,没有编译时错误。此错误发生在运行时。
标签: delphi firemonkey