掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
自身を含む複数フォームの生成と破棄 (ID:22966)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>「自身が生成したフォームが閉じられたかどうかの判定」 ですが >Form2のイベントを監視すればうまくいくとおもいきや >OnDestroyは発生しない。(Override用?) >OnCloseは発生するが、この時点ではまだForm2は存在するので >生成すると不具合が発生。 Form2をCloseしただけではメモリに残ったままです。 (Closeした状態でShowするばそのまま表示もされる) メインフォーム以外ではそのような仕様になっています。 そのためOnDestroyは発生しません。 メモリから削除したいのであれば、Form2のOnCloseイベントでRelease;を呼んでください。 この時「自身が生成したフォームが閉じられたかどうかの判定」は Form2のOnDestroyでも検出できますが Form1のprotectedに procedure Notification(AComponent: TComponent; Operation: TOperation); override; を追加して procedure TForm1.Notification(AComponent: TComponent; Operation: TOperation); begin inherited; if (Operation = opRemove) and (AComponent is TForm2) then begin Form2 := nil; end; end; のような方法もあります。 このルーチンはForm2が完全に破棄された後で呼ばれます。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.