掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
動的フレームの再作成でエラー (ID:22545)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
例えばFormと同じようにTFrameにReleaseFrameを追加すると ---------------------------------------------- const CM_RELEASEFRAME = WM_APP+1; type TFrame2 = class(TFrame) Button1: TButton; procedure Button1Click(Sender: TObject); private procedure CMReleaseFrame(var Message: TMessage); message CM_RELEASEFRAME; procedure ReleaseFrame; ・・・・ end; implementation procedure TFrame2.CMReleaseFrame(var Message: TMessage); begin Free; end; procedure TFrame2.ReleaseFrame; begin PostMessage(Handle, CM_RELEASEFRAME, 0, 0); end; procedure TFrame2.Button1Click(Sender: TObject); begin ReleaseFrame; // Freeではだめ end; ---------------------------------------------- ここでは簡単に説明するため親ではなく自分にポストしました。 ただ、例えば frm2:=TFrame2.Create(Self) としてfrm2を動的に作成した後、frm2を上記の様に解放しても frm2は以前の参照が残されたままなのでそのまま再度frm2をアクセスすると当然エラーとなります。 これを避けるには上記でFreeをする時に参照している変数(frm2)もnilに設定すべきですがソフトによって参照箇所が一箇所とは限りません。 (参照の変数が固定されている時は直接nilを代入しても良いですが、キレイではないですね) TFrameの場合は親が存在するわけですから親側にて処理すべきと思います。 親にポストするときは WPARAMかLPARAMでフレームのアドレス(参照)等を渡せばよいと思います。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.