フレームを閉じると、解放されず、メモリに残り、割り当てられたままになります。
フレームを解放できるように、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()
フレームを解放する必要があるときに呼び出すだけで、最も早いタイミングで解放されます。