0

我写了一个非常简单的FMX Adroid App,功能是:
显示Form 2然后写一些东西记录(包括标题和详细文本),

将Form 2关闭到Main Form,然后在Main Form中打一个checkbox,标题是我们刚刚记录的表格2.如果用户选中复选框,然后按“del”按钮然后删除记录文件和复选框。

问题是:
当关闭 Form 2 并在 MainForm::OnActivate 中,我们可以为记录添加一个新复选框。
如果我们选中复选框然后单击删除,释放选中复选框的指针,复选框仍然在主窗体中,直到我重新打开 APP。
我试过:
无效();
应用程序->ProcessMessages();
开始更新();
结束更新();
仍然无法工作

有谁知道发生了什么?为什么 FMX TForm 成员没有 "Repaint()" 或 "Update()" "Refresh()" ?就像 VCL 一样。

4

1 回答 1

0

如果您希望您的TCheckBox*(或任何其他控件)从表单中消失,则需要在删除它之前将其Parent属性设置为。nullptr如果您在运行时使用创建控件,new请记住调用delete.

//init
TCheckBox* checkBox = new TCheckBox(Form2);

//delete
checkBox->Parent = nullptr;
delete checkBox;

回答问题的第二部分,您可以调用Invalidate()函数来重新绘制整个表单(但首先请参阅此答案的第一部分)。但我认为它会在不调用此函数的情况下正常运行。

您的控件有Repaint()成员,最好改为调用它们,即。如果您的复选框被放置在 中TPanel*,则仅重新绘制此面板比重新绘制整个表单更好。

于 2020-11-10T08:00:57.450 回答