当我们关闭一个窗口时,它并没有被释放,仍然留存在内存中并保持分配状态。
如何跟踪 TFrame 的 OnClose 事件,以便能够释放该窗口?
当我们关闭一个窗口时,它并没有被释放,仍然留存在内存中并保持分配状态。
如何跟踪 TFrame 的 OnClose 事件,以便能够释放该窗口?
TFrame
没有OnClose
事件。你需要手动实现和跟踪它。但是,当你准备释放Frame对象时,可以像TForm.Release()
一样 - 给自己发送一个自定义消息,然后在消息处理程序中释放对象。例如:
type
TMyFrame = class(TFrame)
private
procedure CMRelease(var Message: TMessage); message CM_RELEASE;
public
procedure Release;
end;
procedure TMyFrame.CMRelease(var Message: TMessage);
begin
Free;
end;
procedure TMyFrame.Release;
begin
PostMessage(Handle, CM_RELEASE, 0, 0);
end;
当您需要释放该帧时,只需调用 Release()
方法,它将在其最早方便的时间自动释放。