如何在关闭后释放TFrame

时间:2013-06-10 11:42:15

标签: delphi delphi-7

当我们关闭一个帧时,它没有被释放,它仍然保留在内存中并且仍然被分配。

如何跟踪TFrame的OnClose事件,以便能够释放帧?

1 个答案:

答案 0 :(得分:4)

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(),它就会在最早的时候自由释放。