delphi - 如何在其自身事件中释放控件?

标签 delphi events controls firemonkey free

我在 FMX 应用程序中有一个 TPanels 列表,我想在单击它时释放一个面板。

直接在 Onclick 处理程序中释放它们不是正确的方法,因为我遇到了访问冲突。而且我不想使用 windowsmessages (在 How to free control inside its event handler?Why does my program crash when I destroy a button in its own OnClick handler? 中推荐),因为它是一个 firemonkey 应用程序,我不知道这些消息在 android 和 mac 上如何工作。

还有其他解决办法吗?

最佳答案

使用myObject.Release :

Marks this TFmxObject object for delayed deletion.

此方法中的立即操作:

  • 设置父级= nil
  • 将对象插入延迟删除列表

延迟行动:

  • 从列表中释放对象 (vPurgatory)。

请记住,方法Free(和过程FreeAndNil)不会删除移动平台中的对象本身:

// under ARC, this method isn't actually called since the compiler translates // the call to be a mere nil assignment to the instance variable, which then calls _InstClear

关于delphi - 如何在其自身事件中释放控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31785692/

相关文章:

Delphi VirtualTreeView - 节点悬停时自动聚焦节点

javascript - Adobe Edge 如何通过代码禁用自动播放?

c# - 使用文本文件保存和加载 TextBox 或其他控件值

delphi - Delphi中如何改变滚动条的颜色?

delphi - 如何在Delphi 2006项目中的所有文件中进行全局搜索和替换

delphi - 我的表单从未收到发布的自定义消息

angular - Angular 2 更改前和更改后

javascript - onmousemove 使用 2 个参数

cocoa - 在一个窗口中使用 mouseMoved 的多个自定义控件

带有正则表达式验证器回发问题的 ASP.Net FileUpload 控件