Delphi の TFrame で 継承した Destroty のイベント発生タイミング
Delphi の TFrame 上のリストに埋め込んだオブジェクトをFrame開放時にFreeしてやろうとしてハマったメモ TFrame にはコンストラクタとデストラクタ イベントが無いので、 継承して追加する も、Destroy イベントが発生したときには、リストのカウンタが既に 0 で埋め込んだオブジェクトへアクセスする手段が無くなっていました ここに よるとTFrameのDestroyが実行されたときには、親フォームからの破棄が行われたあとなんだとか → WM_DESTROY を追加してそこへ処理を記述 private procedure WMDestroy(var Msg: TWMDestroy); message WM_DESTROY; // procedure TFrame1.WMDestroy(var Msg: TWMDestroy); begin if (csDestroying in ComponentState) then begin // ココに Destroy 処理 end; inherited; end;