3

フレームを閉じると、解放されず、メモリに残り、割り当てられたままになります。

フレームを解放できるように、TFrame の OnClose イベントを追跡する方法は?

4

1 に答える 1

4

TFrameOnCloseにはイベントがありません。それを手動で実装して追跡する必要があります。ただし、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()フレームを解放する必要があるときに呼び出すだけで、最も早いタイミングで解放されます。

于 2013-06-10T16:16:56.197 に答える