如何从 TFrame 内的事件处理程序关闭 TPopup 中显示的 FMX TFrame

How to close an FMX TFrame shown in a TPopup from event handlers inside the TFrame

我使用通过调用 TPopup.Popup(true); 方法显示的框架。如果框架包含一个设置了 ModalResult 属性 的按钮(例如,mrOK),它会在用户单击时自动关闭。但是我需要在其中 TListBoxOnClick 事件中关闭框架。 Frame 没有 Close 方法。 我想避免使用消息发布到父窗体,因为当应用程序移植到 Android 时它可能会导致未来的问题,而且我不想为 [=] 声明 OnClick 事件处理程序15=] 在父窗体中,因为框架可能由多个不同的窗体显示,这会降低父窗体代码的质量,使其变得笨重且难以阅读。 我非常感谢有关如何执行此操作的建议。

当您像此处解释的那样从 TPopUp 继承时 (How to make my own dialog component from Firemonkey TPopUp?) 然后您可以在框架中触发事件时调用 ClosePopup

我找到了以下出路。我叫

(GetParentComponent as TPopup).IsOpen:=false;