如何在自己的事件中释放控件?

时间:2015-08-03 11:08:54

标签: 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上是如何工作的。

还有其他解决方案吗?

1 个答案:

答案 0 :(得分:8)

使用myObject.Release

  

将此TFmxObject对象标记为延迟删除。

此方法中的立即行动:

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

延迟行动:

  • 列表中的免费对象(vPurgatory)。

请注意,该方法Free(和过程FreeAndNil)不会在移动平台中移除对象本身:

  

//在ARC下,实际上并没有调用此方法,因为编译器会进行转换   //调用只是实例变量的零分配,然后调用_InstClear