【问题标题】:How to close an FMX TFrame shown in a TPopup from event handlers inside the TFrame如何从 TFrame 内的事件处理程序关闭 TPopup 中显示的 FMX TFrame
【发布时间】:2015-08-05 14:56:37
【问题描述】:

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

【问题讨论】:

    标签: delphi popup modal-dialog frame firemonkey


    【解决方案1】:

    我找到了以下出路。我打电话给

    (GetParentComponent as TPopup).IsOpen:=false;
    

    【讨论】:

    • 一个框架没有关闭方法的原因是它不是一个表单。自动关闭的不是框架,而是包含它的表单(在本例中为 TPopup)。这也是您的修复工作有效的原因。 (尽管看起来,框架更像是组件而不是表单)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-04-11
      • 2012-04-19
      • 2010-12-22
      • 2011-05-08
      • 1970-01-01
      • 2013-09-28
      • 2012-11-27
      • 2010-11-09
      • 2011-04-28
      相关资源
      最近更新 更多